Nginx性能优化
来源:互联网 发布:mac剪辑电影软件 编辑:程序博客网 时间:2024/06/09 19:15
编译过程优化
在编译Nginx时默认会开启debug模式,这样会插入许多追踪和ASSERT信息到文件中,导致Nginx的大小会达到数兆字节。
所以在编译前取消debug模式,这样编译后只有几百千字节,取消debug模式可以如下操作:
vim /usr/local/src/nginx-1.8.0/auto/cc/gcc # debug CFLAGS="$CFLAGS -g"
注释上面的语句即可取消debug模式,注意这一步需要在编译前操作。
指定CPU类型编译优化
在编译Nginx时,默认的GCC编译参数是“-O”,要优化GCC编译,可以使用下面两个参数:
--with-cc-opt='-O3'--with-cpu-opt=CPU
CPU的值可以为pentium、pentiumpro、pentium3、pentium4、athlon、opteron、amd64、sparc32、sparc64、ppc64,可以通过下面的命令查看CPU类型:
cat /proc/cpuinfo | grep "model name"
利用TCMalloc优化Nginx性能
TCMalloc全称为Thread-Caching Malloc,是谷歌开发的google-perftools中的成员。
与标准glibc库的Malloc相比,TCMalloc在内存分配效率上和速度上要高很多,并且降低了系统负载,提高了服务器在高并发下的性能。要安装TCMalloc库,需要安装libunwind(32位系统不用安装)和google-perftools。
安装libunwind
下载地址:http://ftp.yzu.edu.tw/nongnu/libunwind/,这里使用1.1版本。
tar zxf libunwind-1.1.tar.gzcd /usr/local/src/libunwind-1.1CFLAGS=-fPIC ./configuremake CFLAGS=-fPICmake CFLAGS=-fPIC install
安装google-perftools
下载地址:http://google-perftools.googlecode.com,这里使用的是1.8.2版本。
tar zxf google-perftools-1.8.2.tar.gzcd /usr/local/src/google-perftools-1.8.2./configuremake & make installecho "/usr/local/lib" > /etc/ld.so.conf.d/usr_local_lib.confldconfig
重新编译Nginx
./configure --with-google_perftools_module --with-http_stub_status_module --with-http_gzip_static_module --prefix=/usr/local/nginxmake & make install
注意,安装期间可能出现的问题:
libcrypto.so.6: cannot open share —> 执行yum install -y openssl*the Google perftools module requires the Google perftools library. —> 把auto/lib/google-perftools/conf中的 /usr/local 全部替换成google-perftools的路径
为google-perftools添加线程目录
mkdir /tmp/tcmallocchmod 0777 /tmp/tcmalloc
修改Nginx主配置文件
在pid这行下面添加如下代码:
google_perftools_profiles /tmp/tcmalloc;
重启Nginx
kill -HUP `cat nginx.pid`
验证运行状态
lsof -n| grep tcmalloc
其结果会显示对应Nginx开启线程数的记录,文件后面的数值为Nginx的pid。
Nginx内核优化
在Linux系统中,对针对Nginx应用而进行的内核参数优化,下面是一些例子:
net.ipv4.tcp_max_tw_buckets = 6000
net.ipv4.ip_local_port_range = 1024 65000
net.ipv4.tcp_tw_recycle = 1
net.ipv4.tcp_tw_reuse = 1
net.ipv4.tcp_syncookies = 1
net.core.somaxconn = 262144
net.core.netdev_max_backlog = 262144
net.ipv4.tcp_max_orphans = 262144
net.ipv4.tcp_max_syn_backlog = 262144
net.ipv4.tcp_synack_retries = 1
net.ipv4.tcp_syn_retries = 1
net.ipv4.tcp_fin_timeout = 1
net.ipv4.tcp_keeplive_time = 30
将上面的内核参数加入/etc/sysctl.conf中,然后执行:
/sbin/sysctl -p
使其生效。
net.ipv4.tcp_max_tw_buckets:设定timewait数量,默认为180000; net.ipv4.ip_local_port_range:设定允许系统打开的端口范围; net.ipv4.tcp_tw_recycle:设置启用timewait快速回收; net.ipv4.tcp_tw_reuse:设置开启重用,允许将time-wait socket重新用于新的TCP连接; net.ipv4.tcp_syncookies:开启syn cookies,当出现syn等待队列溢出时启用cookies进行处理; net.core.somaxconn:调节系统同时发起的tcp连接数,默认128,在高并发请求中,默认值可能会导致连接超时或重传,因此要结合并发数调节; net.core.netdev_max_backlog:当每个网络接口接收数据包的速率比内核处理这些包的速率快时,允许发送到队列数据包的最大数目; net.ipv4.tcp_max_orphans:设定系统中最多有多少个tcp套接字不被关联到任何一个用户文件句柄上。若超过这个数字,孤立连接将复位并打印警告信息。只是防止简单的Dos攻击,更多情况下应该增加这个值; net.ipv4.tcp_max_syn_backlog:记录那些尚未收到客户端确认信息的连接请求的最大值。 net.ipv4.tcp_synack_retries:决定内核放弃连接之前发送syn+ack包的数量; net.ipv4.tcp_syn_retries:决定内核放弃连接之前发送syn包的数量; net.ipv4.tcp_fin_timeout:决定套接字保持在fin-wait-2状态的时间,默认60s; net.ipv4.tcp_keeplive_time:表示当keepalive启用时,tcp发送keeplive消息的频率,默认2(单位小时);
- Nginx配置性能优化--NGINX
- [nginx]nginx的性能优化
- nginx性能优化
- Nginx 性能优化
- Nginx配置性能优化
- Nginx upstream性能优化
- Nginx性能优化技巧
- Nginx配置性能优化
- Nginx配置性能优化
- Nginx配置性能优化 .
- Nginx配置性能优化
- Nginx配置性能优化
- Nginx配置性能优化
- Nginx配置性能优化
- Nginx配置性能优化
- Nginx性能优化
- Nginx性能优化
- Nginx配置性能优化
- Servlet – Upload、Download、Async、动态注册
- hdu 1288 Hat's Tea
- phpStorm代码格式化tip
- tomcat能够访问主页但是访问不到项目的解决方式
- javaScript知识点整理(一)
- Nginx性能优化
- 4. Median of Two Sorted Arrays
- MD5加密
- Android 之Activity、Window、View之间的关系
- [agc015c]Nuske vs Phantom Thnook
- Android的消息机制
- mybatis入门(四)——sqlMapConfig.xml详解
- 学习前端第一天--认识标签
- 分布式集群批量执行命令sh脚本