服务器端开发
wangbin579
TCPCopy作者,MySQL内核顶级专家,书籍<<The Art of Problem-Solving in Software Engineering:How to Make MySQL Better>>作者
展开
-
从服务器端开发来看进程与线程的优缺点
<br />在linux环境下,对于服务器端程序开发而言,进程与线程各自有优点和缺点,不少人对此有不少误解。<br /><br />1)默认情况下,线程占10M虚拟内存,对于开发服务器端程序来说,特别是apache程序来说,一个进程如果有50个线程,那就已经占了500M虚拟内存,很恐怖的一个数据,如果你想产生一个core文件,就产生至少500M大小的core文件。对于占用大量内存的应用程序来说,线程并没有进程好。<br /><br />2)对于共享内存而已,线程控制同步访问非常容易,原创 2011-04-16 14:28:00 · 1454 阅读 · 0 评论 -
nginx很健壮啊,近三个月还没有崩溃掉一个进程
虽然负载很不均衡,但还是很健壮的.从下面数据就可以看出nginx的运行情况: 811 adrun 15 0 37128 33m 920 S 28.4 0.9 17496:22 nginx 810 adrun 15 0原创 2011-12-01 16:41:26 · 1706 阅读 · 0 评论 -
tcpcopy和nginx hmux模块都放到github中去了,要投身social coding了
google code感觉太差了,很难合作编程.大家如果对这两个开源感兴趣的话,欢迎参与到github中去.明白了nginx hmux模块原理,对nginx也应该感觉到不太难了.明白了tcpcopy程序原理,对于黑客的原理也感觉不太难了,至少向前进了一步.最后希望大家多多支持原创 2011-10-15 13:21:17 · 1638 阅读 · 3 评论 -
ngx_lua模块,发现不少英文单词错误
可能agentzh太忙了,注释中出现了不少英文错误。有幸查看代码中发现了不少,目前所能做的也就是理解ngx_lua模块的原理,发现一些注释错误。希望大家也参与进来,共同改善开源项目原创 2012-02-22 10:17:02 · 1521 阅读 · 1 评论 -
淘宝Tengine vs ngx_openresty
之前对这迷迷糊糊的,以为是同一个东西,问了agentzh,终于明白差别了。agentzh是这样说的:Tengine 是一个 nginx 的 fork,而 ngx_openresty 是 nginx 的 bundle.最初两者没有交集,后来Tengine 也是 ngx_openresty 多数核心组件的用户 了,Tengine pdf文档中提到ngx_lua等核心组件也不足为原创 2012-02-23 15:10:35 · 8258 阅读 · 0 评论 -
偶然发现nginx_hmux_module下载量增加了不少
居然还有老外用我们的东西,可惜我英文不好,不过居然还交流成功了,以后得加强英文交流的能力。原创 2012-02-14 15:00:47 · 1053 阅读 · 0 评论 -
nginx hmux模块被冷落了
自从在开源中国上传了tcpcopy和nginx hmux模块介绍,tcpcopy反应不错,但nginx hmux连一个下载量都没有增加。nginx hmux模块可是费了很大劲才写成的,要求苛刻,不能出大错。tcpcopy一般出问题也没有关系,毕竟不影响到公司的赚钱。所以还是写用户需要的,而且风险小的。原创 2012-02-24 15:22:36 · 2678 阅读 · 0 评论 -
lua编译问题总结
1、首先安装lualinux系统make linuxmake install2、编译gcc -lm -g -o test test.c /usr/local/lib/liblua.a -ldl如果少-ldl,那么编译就会报:gcc -lm -g -o test test.c /usr/local/lib/liblua.a /usr/原创 2012-02-16 17:39:50 · 13864 阅读 · 1 评论 -
最近一段时间打算主攻lua
最近一星期初步看了lua,感觉语言不错,但推荐的书籍不怎么的,好多稀里糊涂的,不像大师写的那么容易明白.下星期准备从lua源代码入手,把各种不明白给整明白,不想从书籍中获取知识了.公司目前在推广lua,一方面暴雪游戏是用lua的,另一方面就是淘宝也在用这个.为了迎合公司的喜好,打算最近主攻这个,一方面也算为公司做点事情,另外一方面也是为了迎接agentzh来讲解ngx-lua方面的内容原创 2012-02-18 17:54:06 · 1735 阅读 · 1 评论 -
nginx pk apache 2.4全过程系列即将公布
nginx是异步处理模型,只需要几个进程就能够处理大量在线请求,而apache 2.4仍然是进程模型或者线程模型,即仍然采用大量线程来处理大量在线请求。之前淘宝曾经做过nginx和apache 2.4的性能对比,但被批很多(http://blog.zhuzhaoyuan.com/)。本人采取不同的线路来系统地科学地对比nginx和apache 2.4进行代理方面的性能对比,我们的利器就是tcpco原创 2012-03-26 10:14:10 · 5007 阅读 · 1 评论 -
nginx lua模块还真是利器
利用nginx lua模块,外加nginx模块开发+对memcached的异步改造,就能够实现很多基于异步架构的复杂应用.以前老是纠结于异步架构的复杂,现在感觉轻松多了,很多应用轻松可以搞定,再加上tcpcopy请求复制,可以做到开发无差错或者开发风险大大降低,开发不再充满焦虑,反而充满乐趣.如果大家有兴趣的话,建议看看nginx模块开发,nginx lua模块,也可以看看tcpcopy,原创 2012-03-13 21:00:01 · 4680 阅读 · 2 评论 -
小心点,不要瞎升级nginx
最近新增了功能,顺便把nginx升级到1.0.0,结果被nginx的bug恶性到了。下面是利用tcpcopy,从access.log来分析nginx各种版本的测试结果: nginx-1.0.14 没有问题 [wangbin@bgp176-141 logs]$ grep '16/Mar/2012:11:37' acces原创 2012-03-16 13:49:31 · 7080 阅读 · 3 评论 -
tcpcopy避免了nginx的两大问题
当利用nginx某个版本的情况下,也许你不知道这个版本有哪些问题,那怎么避免上线过程中出现的问题呢?下面就是利用我们开发的tcpcopy来成功避免了上线过程中才会出现的两大问题(其它压力测试工具是发现不了的或者很难发现),希望对你们有所参考。第一次是二号人物Maxim Dounin书写的keepalive模块的问题,具体如下:http://blog.csdn.net/wangbin57原创 2012-03-19 18:21:58 · 4658 阅读 · 0 评论 -
nginx hmux模块开源了
最初公司部门内是这样访问resin的 nginx-->resin 直接利用nginx的代理(http1.0)来访问resin,据运维人员实践结果,发现这样性能很差,于是中间加了apache这一层,于是变成这样。 nginx-->apache-->resin 这样就初步解决了上述问题。后来听说杭州那边写了一个nginx访问tomcat ajp的原创 2011-09-26 11:17:08 · 4171 阅读 · 2 评论 -
tcpcopy---研究的就是如何欺骗服务器,让其相信复制的请求就是访问它的
文档:http://code.google.com/p/tcpcopy/downloads/list代码:https://github.com/wangbin579/tcpcopy欢迎对这方面感兴趣.原创 2011-10-15 14:03:27 · 2095 阅读 · 0 评论 -
nginx通过hmux协议访问resin--说明文档
这里讲述一下在nginx-0.8.53版本下使用本模块的具体安装方法(linux)一、安装准备1、下载nginx-0.8.53;2、下载ngx_hmux_module_vx.x.tar包 (http://code.google.com/p/nginx-hmux-module/downloads/list); 这里供下载的版本是初步版本,以后会随着需求不断增强其功能原创 2011-04-16 14:42:00 · 10976 阅读 · 2 评论 -
nginx多进程模式下保持后端连接keepalive为啥需要accept_mutex off的原因
先声明,如果可能分析有误,敬请见谅。我们从strace角度进行分析nginx访问memcached:nginx单进程模式下: [root@localhost sbin]# strace -p 13303 Process 13303 attached - interrupt to quit gettimeofday({1281607164, 794683}, NU原创 2011-04-16 14:34:00 · 8348 阅读 · 3 评论 -
对nginx和apache模块开发的一点心得体会
<br />简要先介绍一下:<br /> <br />1)nginx处理过程是异步的,类似于医院机构,效率比较高;apache处理过程是同步的,采用进程或者线程模型或者进程线程混合模型,请求过来一直处理到请求结束,中间过程一般不打断<br /> <br />2)各有各的优点,apache模块开发较简单,功能齐全,nginx模块开发较复杂,功能相对不齐全<br /> <br />3)apache抗压能力差,nginx抗压能力较好<br /> 由于apache采用的是进程或者线程模型,大量请求过来时原创 2011-04-16 14:38:00 · 2512 阅读 · 0 评论 -
ngx_http_upstream_keepalive_module原理分析
我们知道针对后端的keepalive是通过nginx.conf配置文件来指定的,例如 upstream resins{ server 61.135.250.217:6800; keepalive 1024; }nginx在读取配置文件的时候,就会执行指令相应的函数,查看ngx_http_upstream_keepalive_module源代码,我原创 2011-04-16 14:36:00 · 7729 阅读 · 0 评论 -
针对nginx,大胆利用调试信息来部署应用(去掉优化参数)
<br /> 在高并发情况下,nginx程序有时候会遇到偶然的进程崩溃,这些bug在测试的过程中又往往不能够或者很难重现,导致调试非常困难。<br /> 有些人说,用输出log的方式,但这种方式并不一定适用,有些问题是无法输出到log中去的,即使有,往往信息又很少。<br /> 最佳的方式就是保留程序崩溃时的现场,就像保留事故现场信息一样。linux环境下,可以利用core文件,但产生有用的core文件又必须要有调试信息,而且不加优化(例如-O2 -O)。原创 2011-04-16 14:37:00 · 1914 阅读 · 1 评论 -
nginx通过hmux协议访问resin--测试项目列表
<br />项目列表如下:<br /><br />1)resin-doc<br /><br />2)jackrabbit<br /><br />3)hudson<br /><br />4)jetspeed<br /><br />5)geoserver<br /><br />6)VQWiki<br /><br />7)struts2-showcase<br /><br />8)spring-security-samples<br /><br原创 2011-04-16 14:40:00 · 959 阅读 · 0 评论 -
传递网络数据避免字节序的一个技巧
这也许是个常识,不过别笑我无知,对于我这种游击队来说,一切都是知识。 有次去郊区旅游的时候,突然想起nginx是如何解决网络字节序问题的,当时一时想不起来,后来回来一查,发现人家主要是用unsign char数组来解决了,感叹自己了解太不深了。原创 2011-04-16 14:29:00 · 880 阅读 · 0 评论 -
nginx resin hmux性能分析
<br />下面是经过简单测试,得出的结论,仅供参考<br /> nginx通过http访问resin:<br /> 5318.22 [#/sec] (mean)<br /> nginx通过hmux访问resin:<br /> 7050.85 [#/sec] (mean)<br /> nginx通过keepalive方式和hmux访问resin:<br /> 13152.60 [#/sec] (mean)<br />原创 2011-04-16 14:32:00 · 1878 阅读 · 2 评论 -
nginx通过hmux协议访问resin--下载地址
最近写了mod_caucho在nginx中的实现,欢迎使用,如果有问题,请联系我代码下载:http://code.google.com/p/nginx-mod-caucho/downloads/list文档:http://code.google.com/p/nginx-mod-caucho/wiki/readme原创 2011-04-16 14:43:00 · 860 阅读 · 0 评论 -
我对服务器端技术开发的一点了解
从事服务器端开发所需要了解的技术有如下:1)tcp/ip协议,http协议2)c or java or both3)linux4)数据结构和算法从事服务器端开发的内容较多,我这里分为如下几类:1)基于服务器API的模块开发,如apache模块开发、nginx模块开发这种方法开发难度大,容易导致崩溃,不易扩展,但往往性能也不错。只有万不得已,才采用这种方法。 nginx采用hmux协议访问resin的方式,就属于这一种。2)独立于服务器API的开原创 2011-04-16 14:29:00 · 6278 阅读 · 0 评论 -
开发nginx resin hmux协议的原因
<br />最初公司部门内是这样访问resin的<br /><br /> nginx-->resin <br /><br />直接利用nginx的代理(http1.0)来访问resin,据运维人员实践结果,发现这样性能很差,于是中间加了apache这一层,于是变成这样。<br /><br /> nginx-->apache-->resin <br /><br />这样就初步解决了上述问题。<br /><br />后来听说杭州那边写了一个nginx访问t原创 2011-04-16 14:30:00 · 2072 阅读 · 1 评论 -
我对nginx_ajp_module模块的测试心得
网易杭州研究院的人还是挺牛的,我的水平与他们相差若干个等级,所以有所不对的地方,敬请见谅。测试了一下nginx ajp模块,发现可能有如下问题(有些问题并不是这个模块带来的):1、潜在bug,ngx_http_ajp.c:359行%s输出格式,但r->method不是字符串类型,而是ngx_uint_t类型,所以有可能会导致进程崩溃的情况发生 357 if ((method = sc_for_req_method_by_id(r)) == UNKNOWN_METHOD) { 358原创 2011-04-16 14:39:00 · 5792 阅读 · 3 评论 -
nginx针对fastcgi保持keepalive的实验
<br />为了保持与后端的连接,请下载keepalive模块(http://mdounin.ru/hg/ngx_http_upstream_keepalive )<br />需要注意的是在多进程模式下,需要设置accept_mutex off;<br /> <br />假设你已经会用keepalive模块,我们继续分析在fastcgi如何保持连接?<br /> <br />nginx连接fastcgi默认情况下,是这样的(即使你设置了上面keepalive)<br /> <br />[root@loc原创 2011-04-16 14:39:00 · 1997 阅读 · 0 评论 -
nginx pk apache2.4文档出炉
这里讲述了nginx如何在实际应用中完爆apache,有兴趣的可以下载看看。下载地址:https://github.com/wangbin579/tcpcopy/downloads或者http://tcpcopy.googlecode.com/files/nginx_pk_apache_2.4.pdf欢迎指正。原创 2012-03-29 13:34:08 · 4640 阅读 · 5 评论