一、影响nginx高并发性能的七项重要参数

    nginx配置文件中影响nginx高并发性能的一些参数:

    一、worker_processes  6; #nginx进程数,建议设置为等于CPU总核心数,这时设置为几,在进行top监控的时候就能看到高负载时就会打开几个nginx进程。可通过lscpu命令查看服务器里有几个核(先看几个CPU,以及每个CPU是几核)

    二、worker_connections  65535; #单个进程最大连接数(服务器的最大连接数=单个进程最大连接数*最大进程个数)默认的值是1024,这个值太小的后果就是你的系统会报:too many open files 等这样的错误导致你系统死掉。

    一般给到服务器后最好通过ulimit命令结合修改/etc/security/limits.conf(增加* soft  nofile = * hard  nofile=)两个配置值,将其设置得更大。

    三、keepalive_timeout 120; #长连接超时时间,单位是秒。这个keepalive_timout时间值意味着:一个http产生的tcp连接在传送完最后一个响应后,还需要等待keepalive_timeout秒后,才开始关闭这个连接。

    当httpd守护进程发送完一个响应后,会马上主动关闭相应的tcp连接(keepalive_timeout设为0的效果),如设置keepalive_timeout后,httpd守护进程等待keepalive_timeout时间。实现复用。

    四、gzip  on; 通过测试一个5000多bytes的json数据在经过压缩只后只有700多bytes,压缩效率可达7倍。有效降低带宽的使用,加快响应速度。

    五、tcp_nopush on; #防止网络阻塞;tcp_nodelay on; #防止网络阻塞。这两个指令也许是最难理解的nginx配置, 他们对于nginx的影响在网络的较低层. 你可以简单的认为这些指令决定了操作系统如何处理网络缓存和他们何时将这些缓存输出到最终用户(客户端).。

    我只能建议大家如果你之前不了解这些概念你最好不要动它. 他们不会显著的改善或者改变性能, 所以最好使用他们的默认值.

    六、Access Logs,Error Logs,Open File Cache:默认情况下,Nginx的每个请求都会记录在磁盘上的日志文件中,你可以使用这个方法进行统计,安全问题检查等, 带着这会在一定程度上带来IO使用成本. 目标就是尽量减少磁盘IO(在数据读取时多使用内存,进程间通信使用共享内存)。

    七、Buffers:配置Nginx缓存的大小是一个非常重要的事情. 如果缓存大小设置的太小, Nginx将不得不把上游(用英文upsteams会更好)的相应结果存放到临时的缓存文件里面,这将会同时增加IO的读写操作, 而且流量越大问题越多。

    client_body_buffer_size指令用来指定处理客户端请求的缓冲区大小, 这个代表了访问请求的body. 这是用来处理POST的数据,也就是通过提交表单,文件上传等请求的数据. 如果你需要处理很多大的POST请求的,你必须确保缓存区要设置的足够大。

    fastcgi_buffers 和 proxy_buffers 指令用来处理上流(upstream)的响应结果, 也就是PHP Apache等.它的概念其实和上面提到的差不多, 如果缓冲区不足够大数据将在返回给用户使用之前被保存到磁盘上。

    注意Nginx将这个buffer数据同步的传输给客户端之前,有一个缓存上限, 保存到磁盘也同样受限. 这个上线是通过fastcgi_max_temp_file_size和proxy_max_temp_file_size来设置的. 另外对于代理的连接你也可以通过把proxy_buffering设置成off来彻底的关闭缓存.(通常这不是一个好办法). 

    当然应该还不只这7个重要参数,我这里了解了这七个总结学习了一下存这里了。

publish:July 12, 2016 -Tuesday

二、PHP里性能加速opcache的配置详解

     opcache启用后,执行PHP时就不会每次去加载磁盘中的文件,即启用了opcache时,你如果修改了代码文件,不会立即生效(取决于你设置多少秒去检查一次文件更新,或者重启php等)。opcache安装如下:

wget http://pecl.php.net/get/zendopcache-7.0.3.tgz
tar zxvf zendopcache-7.0.3.tgz && cd zendopcache-7.0.3
/usr/local/php/bin/phpize
./configure --with-php-config=/usr/local/php/bin/php-config
make && make install

Opcache的配置文件及解释:

[Zend Opcache]
zend_extension = opcache.so
#比较常用的配置
opcache.enable=1                    #是否启用操作码缓存
opcache.enable_cli=1                #仅针对CLI环境启用操作码缓存
opcache.revalidate_freq=60          #检查文件的修改的时间周期, 定位为秒,即缓存后60秒去检查代码文件是否被修改过
opcache.fast_shutdown=1             #打开快速关闭, 一次释放全部请求变量的内存,打开这个在PHP Request Shutdown的时候回收内存的速度会提高
;opcache.error_log=""               #OPcache模块的错误日志文件
;opcache.log_verbosity_level=1      #将错误信息写入到服务器的日志级别。致命(0)错误(1) 警告(2)信息(3)调试(4)

#其它不常用的配置
opcache.memory_consumption=128      #共享内存大小,单位MB
opcache.interned_strings_buffer=8   #存储临时字符串的内存大小,单位MB
opcache.max_accelerated_files=4000  #哈希表中可存储的脚本文件数量上限
;opcache.max_wasted_percentage=5    #浪费内存的上限,以百分比计
;opcache.use_cwd=1                  #附加改脚本的工作目录,避免同名脚本冲突
opcache.validate_timestamps=1       #每隔revalidate_freq 设定的秒数 检查脚本是否更新
;opcache.revalidate_path=0          #如果禁用此选项,在同一个 include_path 已存在的缓存文件会被重用
;opcache.save_comments=1            #禁用后将也不会加载注释内容
opcache.enable_file_override=0      #如果启用,则在调用函数file_exists(), is_file() 以及 is_readable() 的时候, 都会检查操作码缓存
;opcache.optimization_level=0xffffffff  #控制优化级别的二进制位掩码。
;opcache.inherited_hack=1           #PHP 5.3之前做的优化
;opcache.dups_fix=0                 #仅作为针对 “不可重定义类”错误的一种解决方案。
;opcache.blacklist_filename=""      #黑名单文件为文本文件,包含了不进行预编译优化的文件名
;opcache.max_file_size=0            #以字节为单位的缓存的文件大小上限
;opcache.consistency_checks=0       #如果是非 0 值,OPcache 将会每隔 N 次请求检查缓存校验和
opcache.force_restart_timeout=180   #如果缓存处于非激活状态,等待多少秒之后计划重启。
;opcache.preferred_memory_model=""  #OPcache 首选的内存模块。可选值包括: mmap,shm, posix 以及 win32。
;opcache.protect_memory=0           #保护共享内存,以避免执行脚本时发生非预期的写入。 仅用于内部调试。
;opcache.mmap_base=null             #在Windows 平台上共享内存段的基地址