彪悍的人生不需要总结
Jan
仰头迈进2009
Dec
寻宝
看浙江卫视《我爱记歌词》时听到的这首歌
你说感情像寻宝你的还没找到
如果找不到请回到我怀抱
我给你权利选择自己需要
我愿是座屋顶遮住每一崇暴
让你累时来我怀中睡得好
如果你找到请认真守到老
幸福或祝福我一样做得到
我愿是座高山抵挡世界的动摇
爱沉没前一秒
记住往爱你的人身边逃
让人感动的歌词
Dec
强大的awk
一直都知道awk是一个很强大的东西
但是一直都没有太多机会去使用
这几天一个离职跳去Tencent的同事在QQ问我一些问题
仔细一想
这不正是当初Tencent笔试的题目吗
看来Tencent的笔试还算实在
都是平时工作遇到最多的问题拿出来考
趁机学习了一下搞懂了当初笔试没弄明白的一个问题
有下面一个文本,包含两个字段,邮箱、发送邮件字节数,分别求出每个邮箱发送字节数总和及平均数
a.txt
42116 tengxun@qq.com
41288 tengyzw@qq.com
41017 tengxun@qq.com
489389 abc@qq.com
848 fkj@qq.com
322 abc@qq.com
904 fkj@qq.com
如果不用关联数组
你可以把不同的邮箱记录提取到不同的文件中然后求和及平均,显然这很麻烦
awk一条命令搞定
cat a.txt |awk ‘{sum[$2]+=$1;count[$2]++}END{for (i in sum) print i,sum[i], sum[i]/count[i] }’
这条简短的语句包含了很多功能,sum[$2]+=$1创建了一个以邮箱字符串为索引的数组并且把不同邮箱的发送字节数求和,count[$2]++则对邮箱出现的次数做了计数相当于uniq -c。
显示结果如下:第一列为邮箱名 第二列为和发送字节数总和 第三列为平均字节数
abc@qq.com 489711 244856
tengyzw@qq.com 41288 41288
tengxun@qq.com 83133 41566.5
fkj@qq.com 1752 876
Dec
回不去的青春
去到广州大学城
正赶上某个校园活动
音乐响起
穿着清凉的大学女生跳着欢快的舞蹈
忽然把我拉回到两年前无忧无虑的校园生活
我是一个想象力丰富而且爱幻想的人
音乐在耳边响起时
时常会把自己想象成舞台上的舞者
当然最多的是幻想自己是那个鼓手
每每此时
又总是想起大学时那些校园乐队
如果我真的有选择
我愿意成为一个摇滚或者流浪歌手
Dec
HTTP 状态代码
作为一个互联网运维工程师
与http协议打交道和吃饭一样频繁
了解这些有助于更快速地判断故障
HTTP 状态代码
如果某项请求发送到您的服务器要求显示您网站上的某个网页(例如,用户通过浏览器访问您的网页或 Googlebot 抓取网页时),服务器将会返回 HTTP 状态代码以响应请求。
此状态代码提供关于请求状态的信息, 告诉 Googlebot 关于您的网站和请求的网页的信息。
一些常见的状态代码包括:
- 200 - 服务器成功返回网页
- 404 - 请求的网页不存在
- 503 - 服务器暂时不可用
下面提供 HTTP 状态代码的完整列表。 点击链接可了解详情。 您也可以访问有关 HTTP 状态代码的 W3C 网页以获得更多信息。
1xx(临时响应)
表示临时响应并需要请求者继续执行操作的状态代码。
代码 说明
100(继续) 请求者应当继续提出请求。 服务器返回此代码表示已收到请求的第一部分,正在等待其余部分。
101(切换协议) 请求者已要求服务器切换协议,服务器已确认并准备切换。
2xx(成功)
表示服务器成功处理了请求的状态代码。
代码 说明
200(成功) 服务器已成功处理了请求。 通常,这表示服务器提供了请求的网页。 如果针对您的 robots.txt 文件显示此状态,则表示 Googlebot 已成功检索到该文件。
201(已创建) 请求成功并且服务器创建了新的资源。
202(已接受) 服务器已接受请求,但尚未处理。
203(非授权信息) 服务器已成功处理了请求,但返回的信息可能来自另一来源。
204(无内容) 服务器成功处理了请求,但没有返回任何内容。
205(重置内容) 服务器成功处理了请求,但没有返回任何内容。 与 204 响应不同,此响应要求请求者重置文档视图(例如,清除表单内容以输入新内容)。
206(部分内容) 服务器成功处理了部分 GET 请求。
3xx(重定向)
要完成请求,需要进一步操作。 通常,这些状态代码用来重定向。 Google 建议您在每次请求中使用重定向不要超过 5 次。 您可以使用网站管理员工具查看一下 Googlebot 在抓取重定向网页时是否遇到问题。 诊断下的网络抓取页面列出了由于重定向错误而导致 Googlebot 无法抓取的网址。
代码 说明
300(多种选择) 针对请求,服务器可执行多种操作。 服务器可根据请求者(用户代理)选择一项操作,或提供操作列表供请求者选择。
301(永久移动) 请求的网页已永久移动到新位置。 服务器返回此响应(对 GET 或 HEAD 请求的响应)时,会自动将请求者转到新位置。 您应使用此代码告诉 Googlebot 某个网页或网站已永久移动到新位置。
302(暂时移动) 服 务器目前从不同位置的网页响应请求,但请求者应继续使用原有位置来进行以后的请求。 此代码与响应 GET 或 HEAD 请求的 301 代码类似,会自动将请求者转到不同的位置,但您不应使用此代码来告诉 Googlebot 某个网页或网站已经移动,因为 Googlebot 会继续抓取原有位置并编入索引。
303(查看其他位置) 请求者应当对不同的位置使用单独的 GET 请求来检索响应时,服务器返回此代码。 对于除 HEAD 之外的所有请求,服务器会自动转到其他位置。
304(未修改) 自从上次请求后,请求的网页未修改过。 服务器返回此响应时,不会返回网页内容。
如果网页自请求者上次请求后再也没有更改过,您应当将服务器配置为返回此响应(称为 If-Modified-Since HTTP 标头)。 由于服务器可以告诉 Googlebot 自从上次抓取后网页没有更改过,因此可节省带宽和开销
。
305(使用代理) 请求者只能使用代理访问请求的网页。 如果服务器返回此响应,还表示请求者应使用代理。
307(暂时重定向) 服 务器目前从不同位置的网页响应请求,但请求者应继续使用原有位置来进行以后的请求。 此代码与响应 GET 和 HEAD 请求的 301 代码类似,会自动将请求者转到不同的位置,但您不应使用此代码来告诉 Googlebot 某个页面或网站已经移动,因为 Googlebot 会继续抓取原有位置并编入索引。
4xx(请求错误)
这些状态代码表示请求可能出错,妨碍了服务器的处理。
代码 说明
400(错误请求) 服务器不理解请求的语法。
401(未授权) 请求要求身份验证。 对于需要登录的网页,服务器可能返回此响应。
403(禁止) 服务器拒绝请求。 如果您看到 Googlebot 在尝试抓取您网站上的有效网页时收到此状态代码(可以在 Google 网站管理员工具诊断下的网络抓取页面上看到此信息),可能是您的服务器或主机拒绝 Googlebot 访问。
404(未找到) 服务器找不到请求的网页。 例如,如果请求服务器上不存在的网页,服务器通常会返回此代码。
如果您的网站上没有 robots.txt 文件,而您在 Google 网站管理员工具”诊断”标签的 robots.txt 页上看到此状态,那么这是正确的状态。 但是,如果您有 robots.txt 文件而又看到此状态,则说明您的 robots.txt 文件可能命名错误或位于错误的位置 (该文件应当位于顶级域名,名为 robots.txt)。
如果您看到有关 Googlebot 尝试抓取的网址的此状态(在”诊断”标签的 HTTP 错误页上),则表示 Googlebot 追踪的可能是另一个页面的无效链接(是旧链接或输入有误的链接)。
405(禁用的方法) 禁用请求中指定的方法。
406(不可接受) 无法使用请求的内容特性响应请求的网页。
407(需要代理授权) 此状态代码与 401(未授权)类似,但指定请求者应当授权使用代理。 如果服务器返回此响应,还会指明请求者应当使用的代理。
408(请求超时) 服务器等候请求时发生超时。
409(冲突) 服务器在完成请求时发生冲突。 服务器必须在响应中包含有关冲突的信息。 服务器在响应与前一个请求相冲突的 PUT 请求时可能会返回此代码,同时会附上两个请求的差异列表。
410(已删除) 如果请求的资源已永久删除,服务器就会返回此响应。 该代码与 404(未找到)代码相似,但在资源以前存在而现在不存在的情况下,有时会用来替代 404 代码。 如果资源已永久删除,您应当使用 301 指定资源的新位置。
411(需要有效长度) 服务器不接受不含有效内容长度标头字段的请求。
412(未满足前提条件) 服务器未满足请求者在请求中设置的其中一个前提条件。
413(请求实体过大) 服务器无法处理请求,因为请求实体过大,超出服务器的处理能力。
414(请求的 URI 过长) 请求的 URI(通常为网址)过长,服务器无法处理。
415(不支持的媒体类型) 请求的格式不受请求页面的支持。
416(请求范围不符合要求) 如果页面无法提供请求的范围,则服务器会返回此状态代码。
417(未满足期望要求) 服务器未满足”期望”请求标头字段的要求。
5xx(服务器错误)
这些状态代码表示服务器在尝试处理请求时发生内部错误。 这些错误可能是服务器本身的错误,而不是请求出错。
代码 说明
500(服务器内部错误) 服务器遇到错误,无法完成请求。
501(尚未实施) 服务器不具备完成请求的功能。 例如,服务器无法识别请求方法时可能会返回此代码。
502(错误网关) 服务器充当网关或代理,从上游服务器收到无效响应。
503(服务不可用) 服务器目前无法使用(由于超载或停机维护)。 通常,这只是暂时状态。
504(网关超时) 服务器充当网关或代理,但没有及时从上游服务器收到请求。
505(HTTP 版本不受支持) 服务器不支持请求中所用的 HTTP 协议版本。
Nov
十年记忆
腾讯的十周年回忆,十年转瞬即逝,简短记录,虽然有些抗拒去想起.
【回忆1998年】
98全国大洪水,但是我们家大旱,那一年用小霸王学会了五笔打字.
【回忆1999年】
在一个打印室,花4块钱一小时,用猫拨号.申请了第一个QQ号,不记得那个QQ号现在流落到了谁手里.只记得那个时候很傻,分不清在线和隐身.见着人就发”你好!”
申请了第一个163.net邮箱.
【回忆2000年】
值得记忆的大概就是和某个女生坐在了同一个教室
【回忆2001年】
第一次高考,一个当地的本科,放弃入学.为了一句话,一个人.
【回忆2002年】
阴差阳错进入吉林大学,那年的十月我们在电话中做出了决定.我们用古老的信件方式倾诉远隔千里的思念.
【回忆2003年】
非典,我们在牡丹园BBS发泄年少轻狂的义愤.
【回忆2004年】
寒假的快乐时光
【回忆2005年】
五一假期昆明之旅,竟成为最后的甜蜜回忆.
大四,一些挣扎一些努力,最后还是选择了找工作.
【回忆2006年】
很多东西划了句号,包括学业,感情.
我留在了长春,她去了泰国支教.狠下心做了了断.
【回忆2007年】
离开留下欢乐和痛苦的长春.背着行囊南下广州.2007年短暂却是一个转折点,开始成长,成熟.
【回忆2008年】
继续为自己的理想努力.
Nov
Web压力测试工具介绍
原文出自Web压力测试工具介绍
Web压力测试工具介绍
1 http_load
1.1 官方网站
- 描述:
- http_load runs multiple http fetches in parallel, to test the throughput of a web server. However unlike most such test clients, it runs in a single process, so it doesn’t bog down the client machine. It can be configured to do https fetches as well.
- You give it a file containing a list of URLs that may be fetched, a flag specifying how to start connections (either by rate or by number of simulated users), and a flag specifying when to quit (either after a given number of fetches or a given elapsed time). There are also optional flags for checksums, throttling, random jitter, and progress reports.
- 地址:
1.2 具体操作及说明
- 常用样例
http_load -parallel 5 -fetches 1000 urls.txt http_load -rate 2 -seconds 300 urls.txt
- 样例含义
- -parallel 简写-p :含义是并发的用户进程数。
- -fetches 简写-f :含义是总计的访问次数
- -rate 简写-r :含义是每秒的访问频率
- -seconds简写-s :含义是总计的访问时间
- urls.txt 是一个url 列表,每个url 单独的一行;不可以直接跟一个url,有些博客主说的可以跟一个url是错误的说法。
- 返回结果
http_load -rate 5 -seconds 10 urls 49 fetches, 2 max parallel, 289884 bytes, in 10.0148 seconds 5916 mean bytes/connection 4.89274 fetches/sec, 28945.5 bytes/sec msecs/connect: 28.8932 mean, 44.243 max, 24.488 min msecs/first-response: 63.5362 mean, 81.624 max, 57.803 min HTTP response codes: code 200 -- 49
- 结果含义
- 49 fetches, 2 max parallel, 289884 bytes, in 10.0148 seconds
- 说明在上面的测试中运行了49个请求,最大的并发进程数是2,总计传输的数据是289884bytes,运行的时间是10.0148秒
-
- 5916 mean bytes/connection
- 说明每一连接平均传输的数据量289884/49=5916
-
- 4.89274 fetches/sec, 28945.5 bytes/sec
- 说明每秒的响应请求为4.89274,每秒传递的数据为28945.5 bytes/sec
-
- msecs/connect: 28.8932 mean, 44.243 max, 24.488 min
- 说明每连接的平均响应时间是28.8932 msecs,最大的响应时间44.243 msecs,最小的响应时间24.488 msecs
-
- msecs/first-response: 63.5362 mean, 81.624 max, 57.803 min
-
- HTTP response codes: code 200 — 49
- 说明打开响应页面的类型,如果403的类型过多,那可能要注意是否系统遇到了瓶颈。
- 特殊说明
- 一般会关注到的指标是fetches/sec、msecs/connect,它们分别对应的常用性能指标参数QPS-每秒响应用户数和response time,每连接响应用户时间。测试的结果主要也是看这两个值。当然仅有这两个指标并不能完成对性能的分析,我们还需要对服务器的cpu、men进行分析,才能得出结论;
- 如果要测试HTTPS,需要在编译前指定Makefile中 SSL_TREE 的路径:一般为 /usr 或 /usr/local 。
2 ab
2.1 官方网站
- 描述:
- ab is a tool for benchmarking your Apache Hypertext Transfer Protocol (HTTP) server. It is designed to give you an impression of how your current Apache installation performs. This especially shows you how many requests per second your Apache installation is capable of serving.
- 地址:
2.2 具体操作
- 常用样例
ab -n 1000 -c 50 http://www.domain.com/myapp.php
- 样例说明
- ab将同时向http://www.domain.com/myapp.php发出50个并发请求,共发出1000次。
- 返回结果
Server Software: nginx/0.6.25
Server Hostname: www.domain.com
Server Port: 80
Document Path: /myapp.php
Document Length: 37899 bytes
Concurrency Level: 100
Time taken for tests: 26.507540 seconds
Complete requests: 2000
Failed requests: 14
(Connect: 0, Length: 14, Exceptions: 0)
Write errors: 0
Keep-Alive requests: 0
Total transferred: 75931178 bytes
HTML transferred: 75439670 bytes
Requests per second: 75.45 [#/sec] (mean)
Time per request: 1325.377 [ms] (mean)
Time per request: 13.254 [ms] (mean, across all concurrent requests)
Transfer rate: 2797.36 [Kbytes/sec] received
Connection Times (ms)
min mean[+/-sd] median max
Connect: 24 640 1310.9 34 7478
Processing: 86 590 2230.9 124 23256
Waiting: 0 55 207.7 41 8292
Total: 112 1230 2501.0 169 23304
-
- 部分返回字串省略,这里只表示关键部分;
- myapp.php每秒钟可以处理的请求数为75.45个
- 特殊说明
- 若将请求数增加,看看服务器能否处理更大的压力,需要调节Apache的 MaxClients、ThreadsPerChild、MaxThreadsPerChild 等参数,基于httpd.conf中的MPM模块选择。
- 若本地服务器不是Apache,请使用其它测试方法。
2.3 文档说明
Nov
致那个叫我爸的骗子
居然有人在短信里叫我爸
还叫我汇钱
我很想当爸
但我不想当个骗子的爸爸
龙生龙凤生凤
骗子才能生骗子
可我不是骗子
Nov
来不及说再见
Nov
烦心事真多
出完长差回来
还没来得及休息
各种各样的烦心事接踵而至
妈妈生病
所负责的系统故障频繁
……
每过一天
就觉得肩上的责任又加重了一点
