nginx服务器调优措施总结:
1、选择合适的网络IO模型 epoll select poll
2、配置合适的启动进程数和每个进程处理请求的工作线程数
3、启用gzip压缩以减小通信量以减少网络IO
4、降低日志级别或关闭日志
5、使用长连接,配置合适的超时时间,keep_alive keepalive-timeout
6、控制浏览器缓存
7、提高操作系统打开文件数,或配置合适的worker_rlimit_nofile来申明你期望的值
8、减少磁盘IO
9、配置nginx自带的proxy_store、proxy_cache、memcached缓存模块或应用第三方缓存模块Ncache、Varnish
减少磁盘IO
Nginx在CPU的利用方面是非常高效的, 所以我会坦白的告诉你这不会成为瓶颈。 同样nginx在使用内存方面也是很高效的,这也不会成为瓶颈。 现在只剩下IO这个服务器瓶颈的罪魁祸首了。为了避免IO瓶颈, 我们需要大量的减少nginx对硬盘驱动器的读写。要做到这一点,我们可以通过修改Nginx的行为,以减少磁盘写操作:
1)Access Logs
可以直接关闭它,如果你需要访问日志,可以考虑保存日志到内存中。这将会比直接写到磁盘上快很多,并且明显减少IO的使用。
可以直接关闭它,如果你需要访问日志,可以考虑保存日志到内存中。这将会比直接写到磁盘上快很多,并且明显减少IO的使用。
2)Error Logs
可以直接关闭它,如果你需要错误日志,错误日志的等级参数你是可以指定的, 如果你指定的太低了他会记录404错误甚至是debug信息。 在实际的应用中可以将它设置为warn级别,将会是绰绰有余的并且能降低IO。
3)Open File Cache
缓存打开文件的描述符,由open_file_cache指令指定。
4)Buffers
配置Nginx缓存的大小是一个非常重要的事情。如果缓存大小设置的太小,Nginx将不得不把上游的相应结果存放到临时的缓存文件里面,这将会同时增加IO的读写操作,而且流量越大问题越多。
client_body_buffer_size指令用来指定处理客户端请求的缓冲区大小,如果你需要处理很多大的POST请求的,你必须确保缓存区要设置的足够大。
fastcgi_buffers和proxy_buffers 指令用来处理上流的响应结果。Nginx将这个buffer数据同步的传输给客户端之前,有一个缓存上限,保存到磁盘也同样受限。这个上限是通过fastcgi_max_temp_file_size和proxy_max_temp_file_size来设置的。
5)彻底移除磁盘IO
可以将数据都放入内存,这样就可以彻底不用考虑磁盘IO的阻塞了。意味着你可以通过增加内存来解决IO的瓶颈。 数据量越多,需要的内存越大。