On Saturday, April 13, 2013 2:05:08 AM UTC+8, agentzh wrote:
Hello!
2013/4/11 li.huang:
> 在我的/sub中连续store多个不同的memcached的方式是不是最有效率的?
我其实并不太明白为什么你要向多个 memcached 写入 :)
我们这个系统大概有这么多的节点,需要缓存同步,50个是下限。
> set_keepalive和close哪个效率更好?如果是set_keepalive的话,超时和长连接数量的值应该根据什么设置才能有最好的性能?
>
应当总是使用 set_keepalive,同时连接池的大小应当设置得足够大。否则短连接很容易将你系统的临时端口用尽。
另外,在进行压力测试时,应当禁掉 DDEBUG 和 --with-debug,同时使用 warn 以上的 error_log
日志过滤级别。否则你的 nginx
都忙着刷不带缓冲的错误日志了。另外,你也应设置访问日志的缓冲区或者完全禁掉访问日志(如果你不需要的话),见
http://wiki.nginx.org/HttpLogModule#access_log
按照上述方法做了以后,压力测试 < 2 hours,貌似性能还可以,我的access_log的buffer是文档里描述的32k不知道合不合理,文档里描述的原子写入记录长度好像不是1行日志的长度 。
最后,如果你的 nginx 进程的 CPU 占用比较高,可以使用“火焰图”(flamegraph)对内部的执行热点进行分析:
https://github.com/agentzh/nginx-systemtap-toolkit#ngx-sample-bt
我们这边都是清一色的debian啊,kernel都是2.6的,这么好的工具, 不用确实可惜,用的话,一个一个patch kernel也很麻烦啊。最难受的是,线上的系统还是debian的裁剪版本。
Regards,
-agentzh