Archive for 电脑网络

谦虚的CMCC

// November 30th, 2009 // 3 Comments » // 数码产品, 电脑网络

办TD 3G上网卡业务

营业员态度不错,先问家住哪,是不是五环以内。说是五环以外网络还不行。这事早在网上就听说了,不易外。反正在北京五环内和出差的时候能上就行。接着被追问去那里出差。大汗,原来只有10来个城市支持,包括天津、上海、沈阳、深圳、广州等等,而且也和北京一样,不敢保证覆盖范围,估计只有中心区可以。其他地区都是2G速率,营业员坦言2G的速度肯定很慢。看来移动确实在TD-SCDMA上吃了不少苦头,不然也不至于沦落到这步田地啊。

不管怎么样,人都来了,好歹试一下设备,看看在mac上能不能用。网上流行的华为ET-128在营业厅没有,现在都是换成大唐的了,插上以后果然告知不可识别。这下子真的死心了。

改天去联通看看吧

面试雨

// October 16th, 2009 // 4 Comments » // 活在北京, 深蓝本纪, 电脑网络

过去的一段时间,连续面试了一堆公司。当然收获也不小。最后去了一个咨询公司。

中软 IT项目经理
Real Networks BI职位
中金 DW职位
国家进出口银行 IT管理职位
某e-business公司 产品开发经理职位(期权若干)
某咨询公司 高级技术经理职位
某硅谷创业公司 高级工程师职位
某第三方支付公司 技术经理职位
某银行信用卡中心 IT项目经理

加上之前的公司,这辈子面试过的公司还有:

NCR
IBM
ICBC
Gomez (10月份被compuware收购了)

胜率超过60%,还算令人满意

什么叫千万级记录数据库?

// September 18th, 2009 // No Comments » // DB2, 电脑网络, 编程开发

很长一段时间以来,总能听到或者看到“千万级”数据(库)这种叫法,无论是网上论坛帖子还是招聘要求里。这对我来说是个怪异的概念,猜不出是什么意思。看了网上多篇文章,似乎概念上大家约定俗成就是指数据量比较大的情况下,如何提高以保证返回结果的时间在用户可接受的范围内。恩,终于明了了,就是性能评测(benchmarking)中的响应时间(response time)嘛。套了个马甲。

第一份工作的时候在银行业,有些表每天的新增数据就有2.3亿条记录(拜大集中所赐),这还只是半个中国的数据。因此从一开始,对大规模数据的处理就是我工作的基本要求。前辈们总结处很多编程与操作的规定,以满足性能上的需要。这里的性能,更多的指在规定要求的时间内完成规定的事情。在这段时间,没有人会提“千万级数据”,因为它太少了。

后来进了DB2的老家IBM, 做起了DB2的技术支持,那些DB2的开发设计大牛来讲DB2的架构,各部分的实现原则与部分细节,终于从更深层次了解了数据库是如何操作数据的,如何计算,如何join, 优化器如何改写SQL并决定访问路径(Access Path - 话说这中文翻译还真是别扭).这背后其实是cost-based estimator, 一切皆以statistics统计数据作为输入,进过DB2优化器的数学模型,得到对结果集大小、CPU时间、I/O时间等等的预测,最后得到一个时间估计,选取估计值最小的方案。

每个人都希望自己的查询(query)有快又好,但这是要跟多种因素相关联的。除了优化器选择access path以外,跟DB系统参数,Bufferpool大小,Sortpool大小,CPU,IO性能都有关系。

当然,大部分个人用户不会考率为了数据库的性能而更换或者扩展CPU数量,换用高性能的企业级存储这样的要钱的方式,因此就省下压榨database系统了。因此在互联网建站和小型企业数据库上,才更多的提到“千万级”的概念 --世上本没这个词,提的人多了也就成了个概念吧。

网上一个不算新但是很详细和典型的帖子:http://www.xiaohui.com/dev/server/20070701-discuz-mysql-cpu-100-optimize.htm

一个典型的场景就是系统突然出现了一个状况(CPU high或者响应慢到不能忍受),于是要分步排除问题,首先系统IO方面时候遇到瓶颈--打开文件数量到上限了?cache出了问题?这个部分没问题了,再看看DB系统的配置参数如何?是不是bufferpool或者sortpool大小不合适所以导致了过多的page-in,page-out?

如果上两点都没有问题,初步可以排除环境方面的因素,接下来就可以关注在具体SQL query的性能了。

那么关注哪些SQL呢?常用的关系型数据库系统(DB2, Oracle也包括MySQL等等),都有工具或者命令抓到耗时最长的SQL query. 例如MySQL下你可以用show processlist;

找到了最慢的sql,有两个方向可以选择:A 从SQL Query涉及的object(table,view)出发分析结构上的欠缺如缺少必要的index等等;另一个方向是用explain得到slow SQL的access path, 看看是不是table scan了,发生在什么环节然后去做修改。

上面是最最通用的数据库调优(Performance tuning)的策略,基本宗旨还是我们创造条件去帮助优化器(DB optimizer)以得到最优解。相信大部分DBA都熟悉。接下来说一下一个极端情况,就是无论你怎么做,优化器认为的最优解在你的特例中实际上却是最糟糕的。我们不能神话优化器,没有一种算法是能够在所有情况下都是最好的,因此极少数的SQL在特定的data特性下,我们需要去“误导”甚至是“欺骗”优化器来的到我们想要的最优解--即便这个方案在优化器看来是很糟糕的。这就是access path hint, 名字可能略有差异但是DB2,Oracle等主流数据库系统都是支持的。我们可以用自己的大脑代替优化器来决定少数特殊query的access path.

啰嗦了这么多,其实是想说,被常常使用的“千万级数据(库)”的概念,其实跟技术没多大关系,只是一个模糊的对DB甚至是整个IT系统的性能要求,有时候可以理解为性能调优技术的要求。以后见到这个概念,知道背后是怎么一回事就行了--尤其是对HR和猎头这类技术盲来说。

P.S. 数据库还有另一个scaling方面的技术来提高性能,这个是架构方向,互联网企业用的比较多。以后有空再写一写。其实网上这样的文章很不少了。

要被升级了?今天被提示Flickr条款

// September 16th, 2009 // 2 Comments » // 电脑网络

之前没看到哪里有告知这项条款的地方啊!!!

“你有 179 張相片儲存在 Flickr 上。達到 200 張後,你將需要升級至 Flickr Pro account,否則你將僅可以查看最新的 200 張相片。
我們將不會刪除任何內容,而且如果進行升級,你將獲得無限空間以儲存所有內容。或許你想要立即升級至 Pro?”

启用新favicon标识

// September 3rd, 2009 // 3 Comments » // Blog, 电脑网络

一直是bluehost的默认的icon,花了2分钟时间做了一个,本来是做成这样子的:
tzhang.com logo
结果压成16×16以后完全走样了,具体请看浏览器地址栏

Heroku试用体会

// August 27th, 2009 // No Comments » // Ruby

上一篇的sinatra应用部署在了heroku上。经过几天的试用有几点体会

1. Heroku是架构在Amazon EC2上的,具有不错的扩展性,只要你有钱,拖拉一下鼠标就能实现scaling了。这一点着实很方便。当然代价是价格会比EC2高,毕竟人家提供了增值服务嘛。具体高多少很难比较,连heroku的老板都说对应关系很复杂。基本上要是网站做大了,用heroku就不合算了。

2. 不烧包的就用heroku的free配置,只有一个dyno的,5M存储空间,可以支持绑定自己的域名。

3. 近期遭遇了几次request time out,因此查了一下heroku doc,dyno基本上把它看成一个线程吧,换句话说,这个一个dyno的free版只能支持并发度为1的压力。因此并发连接多的化,你会经常看到time out的。计算容量也是比较寒酸,用ab -n 10 url测一下,10个请求4个fail掉了orz. 看来免费的午餐也不好用啊。大家用来做原型demo就好了,验证好了自己找地方去deploy也挺好。

update:不知道是这次测试当时受海底光缆受损的影响还是其他原因导致结果很差,后来新的测试比较正常,后面我贴了一个新的benchmarking的测试结果。free的计划还是可以承受一些负载压力的。特此给heroku正名

4. heroku提供了deploy代码的好方案,但在DB方面限于技术原因,还比较薄弱,mysql什么的还是用不起来。

5. google map API是跟域名相关的,如果没有自己的域名的话,部署到xxxx.heroku.com这种子域名下面是不能用的,想必早有人在heroku下面申请了key, 后来者都会遇到冲突。花钱买自己域名吧

6. Heroku的想法不错,这也难怪他们会积攒了数万用户,也得到了300万美元的投资。云计算,不再是一个概念了,已经有若干成熟的方案面向消费者了。这一点要向先行者amazon致敬

7,最后一点就是heroku的支持做的不怎么样,文档也很不完整。遇到问题还是要自己摸索解决。

add-on: AB benchmarking result:做了两个测试,一个是简单到极致的逻辑,另一个相反,是复杂到极致的逻辑,看看两个边界状况的对比和共性应该更能说明问题:case1表现不错(里面就两行code当然不错了,呵呵),case2太复杂了,failed了88个(一共100个请求,FT).

case1: light code:
localhost:sinatra tony$ ab -n 100 -c 10 http://ip2loc.dazhe.me/counter/
This is ApacheBench, Version 2.3 < $Revision: 655654 $>
Copyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/
Licensed to The Apache Software Foundation, http://www.apache.org/

Benchmarking ip2loc.dazhe.me (be patient)…..done

Server Software: nginx/0.6.38
Server Hostname: ip2loc.dazhe.me
Server Port: 80

Document Path: /counter/
Document Length: 15 bytes

Concurrency Level: 10
Time taken for tests: 7.828 seconds
Complete requests: 100
Failed requests: 0
Write errors: 0
Non-2xx responses: 100
Total transferred: 26200 bytes
HTML transferred: 1500 bytes
Requests per second: 12.77 [#/sec] (mean)
Time per request: 782.820 [ms] (mean)
Time per request: 78.282 [ms] (mean, across all concurrent requests)
Transfer rate: 3.27 [Kbytes/sec] received

Connection Times (ms)
min mean[+/-sd] median max
Connect: 309 389 192.2 317 1233
Processing: 316 378 272.2 337 3050
Waiting: 314 377 272.3 335 3050
Total: 627 767 332.5 661 3370

Percentage of the requests served within a certain time (ms)
50% 661
66% 677
75% 705
80% 815
90% 1017
95% 1543
98% 1570
99% 3370
100% 3370 (longest request)

case2: heavy code:
localhost:sinatra tony$ ab -n 100 -c 10 http://ip2loc.dazhe.me/
This is ApacheBench, Version 2.3 < $Revision: 655654 $>
Copyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/
Licensed to The Apache Software Foundation, http://www.apache.org/

Benchmarking ip2loc.dazhe.me (be patient)…..done

Server Software: nginx/0.6.38
Server Hostname: ip2loc.dazhe.me
Server Port: 80

Document Path: /
Document Length: 696 bytes

Concurrency Level: 10
Time taken for tests: 24.932 seconds
Complete requests: 100
Failed requests: 88
(Connect: 0, Receive: 0, Length: 88, Exceptions: 0)
Write errors: 0
Non-2xx responses: 88
Total transferred: 36676 bytes
HTML transferred: 10992 bytes
Requests per second: 4.01 [#/sec] (mean)
Time per request: 2493.243 [ms] (mean)
Time per request: 249.324 [ms] (mean, across all concurrent requests)
Transfer rate: 1.44 [Kbytes/sec] received

Connection Times (ms)
min mean[+/-sd] median max
Connect: 310 328 28.1 316 410
Processing: 614 2067 790.9 1961 3904
Waiting: 613 2066 790.9 1960 3903
Total: 977 2395 788.1 2370 4214

Percentage of the requests served within a certain time (ms)
50% 2370
66% 2645
75% 2888
80% 3086
90% 3569
95% 4036
98% 4177
99% 4214
100% 4214 (longest request)

Sinatra,Heroku,Google AppEngine,Google Map的简单试用

// August 25th, 2009 // 3 Comments » // Ruby

写了个简单的google map应用,用的是简单清爽的Sinatra做DSL, Google Map API, 作用就是把访问者的ip地址解析到地理位置然后在google map上标出来。部署在Heroku上。整个程序只有62行ruby代码。地址在这里:ip2loc.dazhe.me

同样,这段代码可以不经修改的跑在Google AppEngine上,有时间的时候我再做这件事吧。下面是个抓图,有兴趣的朋友帮我验证一下效果。具体地址可能有些偏差,因为用的是国外的ip查询库,在国内的部分可能差别较大,比我我自己的ip就被标在了北海。
snap

我和我的VM们

// August 19th, 2009 // 2 Comments » // OSX, Ruby, 主机圈

我的硬盘里已经有不少VM了,吃掉了大部分硬盘空间。包括

z/OS V1R9, DB2 V9, CICS, COBOL, SMP/E, WAS, TIVOLI, MQ等等产品的DemoPKG,跑在Hercules上 用来做Mainframe技术学习,验证和方案联调。这个有惊人的52G大

z/VM 5.3同样跑在Hercules上,用来做IT虚拟化方案, zLinux当然是少不了了,这个也有5G。而且因为做Virtualization的关系,他的增长是最简单和高效的。可以轻轻松松的因为clone linux系统而成数十倍的增长。用z/VM clone比VMWare要强大的多。

WindowsXP, DB2 V9, Oracle 11G, IBM DWE(Infosphere), Cognos8 BI Server, Informatica PowerCenter 8.6 Server + Client 用来做数据仓库DW和商务智能BI。 这个有20G,跑在VMWare上

SuSE Linux + DB2 + Cognos8 这个用来验证Linux/Unix下DW/BI系统的搭建,产品安装和客户化,性能调优验证.这个有8G,跑在VMWare上

WindowsXP + DB2 V9 + Oracle 11G + SAS V9.2 + SPSS Clementine V11 用来做数据分析和挖掘Data Mining. 这个有15G,跑在VMWare上

除此之外,还有MacOS Leopard + Textmate + MacPort + Gem + Ruby + MySQL + Memcached来做Web敏捷开发--这个不是VM,直接跑在Macbook 466上--不过该机上有一个WinXP通过Bootcamp跑在另一分区,OSX+Win双启动

回顾一下,发现没用过的OS已经不多了,呵呵

Pages: 1 2 3 4 5 6 Next