服务器性能优化

       在做压力测试时,经常会遇到性能瓶颈,这时除了分析程序的问题外还要关注一下服务器的各种参数,毕竟程序最终是运行在服务器上的,因此服务器的调优是必须的,而且还是一个技术活,这里跟大家分享几个不错的系统参数:

  1. open files:运行ulimit -a可以查看系统设置的值,建议修改成65535。在linux中所有的处理都离不开文件描述符,比如网络连接的建立,如果太小可能连网络连接都会失败。
  2. somaxconn:该参数的值放在/proc/sys/net/core/somaxconn中,建议修成成1024,该参数会影响http建立连接队列的大小,如果太小而应用又是一个高并发的web应用就有可能造成性能问题甚至客户端超时
  3. 关闭nf_conntrack模块,该模块会追踪每个连接的状态,开启后在高并发的应用中会出现“table full, dropping packet”的错误,导致丢包问题。对于应用服务器完全可以关闭该模块。

如果遇到问题除了是程序的问题外,也可能是服务器的问题,可以通过服务器的系统日志快速定位问题,其中/var/log/messages是非常重要的一个系统日志,比如上面说得nf_conntrack模块有问题会引发下面的日志

Jan 19 15:03:30 bs00 kernel: nf_conntrack: table full, dropping packet.
Jan 19 15:03:30 bs00 kernel: nf_conntrack: table full, dropping packet.
Jan 19 15:03:30 bs00 kernel: nf_conntrack: table full, dropping packet.

 很明显是数据丢包。

另外tcpdump也是一个不错的工具,加上wireshark可以很容易定位网络上的问题

猜你喜欢

转载自lishichang.iteye.com/blog/2267895