Linux服务器 web性能优化日志 12-5

除了访问量大 某些程序文件负载能力小  虚拟主机的日志文件过大也可能会造成502/504问题

## 内核打开文件数量查看 /etc/sysctl.conf

ulimit -n
结果是最大  无需优化 如需修改文件位于/etc/sysctl.conf
vm.overcommit_memory=1    
或者
sysctl vm.overcommit_memory=1    
或者    
echo 1 > /proc/sys/vm/overcommit_memory         
查看 (默认为0 可以通过上面命令改回0)
/proc/sys/vm/overcommit_memory                                                                                                                                                                                                                                                                                                                            
                                                                                                                                                                                                                                                                                                                                                                            
 内核参数说明如下:                                                                                                                                                                                                      
overcommit_memory文件指定了内核针对内存分配的策略,其值可以是0、1、2。                               
0, 表示内核将检查是否有足够的可用内存供应用进程使用;如果有足够的可用内存,内存申请允许;否则,内存申请失败,并把错误返回给应用进程。 
1, 表示内核允许分配所有的物理内存,而不管当前的内存状态如何。
2, 表示内核允许分配超过所有物理内存和交换空间总和的内存

##php-fpm.conf 优化

emergency_restart_threshold = 60 // 如果子进程在 emergency_restart_interval 设定的时间内收到该参数设定次数的 SIGSEGV 或者 SIGBUS退出信息号,则FPM会重新启动。
emergency_restart_interval = 1m //用于设定平滑重启的间隔时,单位:s(秒),m(分),h(小时)或者 d(天)。默认单位:s(秒)。

//  这个两个设置的作用是,如果在指定的一段时间内指定的子进程失效了,让 PHP-FPM 重启。
listen.backlog = 8192 # 默认为-1(由系统决定)
//php-fpm 必须注意 backlog 的设置,否则上压力就容易 无法连接、网关超时 
pm = dynamic //参数为 static 或 dynamic    ondemand会使用以下设置
// 生产环境 static 子进程的数量是固定的(pm.max_children)
// ondemand:进程在有需求时才产生(当请求时,与 dynamic 相反,pm.start_servers 在服务启动时即启动。
// dynamic:子进程的数量在下面配置的基础上动态设置:pm.max_children,pm.start_servers,pm.min_spare_servers,pm.max_spare_servers。
pm.max_children = 64 //静态进程数  进程池中最多能有多少个进程
pm.start_servers = 33 //动态进程数
pm.min_spare_servers = 16  //最小静态进程数
pm.max_spare_servers = 33  //最小动态进程数
pm.max_requests = 4096 // 设置每个子进程重生之前服务的请求数。对于可能存在内存泄漏的第三方模块来说是非常有用的。如果设置为 '0' 则一直接受请求,默认值:0。

rlimit_files = 51200  //打开文件描述符的限制 相似于sysctl.conf配置
request_terminate_timeout = 120  //为0则PHP 执行过程中不受时间限制  按需求设置
以及
request_slowlog_timeout = 0 //慢日志时间
## 计划任务重启
php-fpm 也有内存泄露的问题,因此定时重启也可以增加系统的性能

//每个 php-fpm worker 占用内存约 20-30M 内存 左右  要根据系统情况设置 避免系统搞奔溃,512 M 内存设置20以内比较稳定
## php.ini
查找命令:
locate php.ini  
memory_limit为128M 或更高的内存 但过高会导致内存耗尽
php.ini 将max_execution_time 改了

## nginx优化

  fastcgi_connect_timeout 300;  //指定连接到后端FastCGI的超时时间
  fastcgi_send_timeout 600; //指定向FastCGI传送请求的超时时间,这个值是已经完成两次握手后向FastCGI传送请求的超时时间。
  fastcgi_read_timeout 300; //指定接收FastCGI应答的超时时间,这个值是已经完成两次握手后接收FastCGI应答的超时时间
全部调整得更大
### 其它方面可以看情况调整 也可以默认不动
fastcgi_buffer_size用于指定读取FastCGI应答第一部分需要用多大的缓冲区,这个值表示将使用1个64KB的缓冲区读取应答的第一部分(应答头),可以设置为fastcgi_buffers选项指定的缓冲区大小。
fastcgi_buffers指定本地需要用多少和多大的缓冲区来缓冲FastCGI的应答请求。如果一个PHP脚本所产生的页面大小为256KB,那么会为其分配4个64KB的缓冲区来缓存;如果页面大小大于256KB,那么大于256KB的部分会缓存到fastcgi_temp指定的路径中,但是这并不是好方法,因为内存中的数据处理速度要快于硬盘。一般这个值应该为站点中PHP脚本所产生的页面大小的中间值,如果站点大部分脚本所产生的页面大小为256KB,那么可以把这个值设置为“16 16k”、“4 64k”等。
fastcgi_busy_buffers_size的默认值是fastcgi_buffers的两倍。
fastcgi_temp_file_write_size表示在写入缓存文件时使用多大的数据块,默认值是fastcgi_buffers的两倍。
fastcgi_cache表示开启FastCGI缓存并为其指定一个名称。开启缓存非常有用,可以有效降低CPU的负载,并且防止502错误的发生,但是开启缓存也会引起很多问题,要视具体情况而定。
fastcgi_cache_valid、fastcgi用来指定应答代码的缓存时间,实例中的值表示将200和302应答缓存一个小时,将301应答缓存1天,其他应答均缓存1分钟。
## 反向代理配置 cat usr/local/openresty/nginx/conf# cat pro*.conf
proxy_connect_timeout 600s; //后端服务器连接的超时时间_发起握手等候响应超时时间
proxy_send_timeout 900;  //后端服务器数据回传时间_就是在规定时间之内后端服务器必须传完所有的数据
proxy_read_timeout 900; //连接成功后_等候后端服务器响应时间_其实已经进入后端的排队之中等候处理(也可以说是后端服务器处理请求的时间)
proxy_buffer_size 32k;
proxy_buffers 4 64k;
proxy_busy_buffers_size 128k;
proxy_redirect off;
proxy_hide_header Vary;
proxy_set_header Accept-Encoding '';
proxy_set_header Referer $http_referer;
proxy_set_header Cookie $http_cookie;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;

## 如果没有设置虚拟内存

fdisk -l    //查看服务器加的磁盘情况,比如我们要swap设置到/dev/xvda  
mkdir /opt/temp/   //建立swap挂载目录
dd if=/dev/xvda  of=/opt/temp/swap bs=1024 count=2048000 // 从/dev/xvda分配2G内存
swapon /opt/temp/swap
## 释放内存和缓存
sync
echo 3 > /proc/sys/vm/drop_caches
cat /proc/sys/vm/drop_caches

仅供参考 附:
  1. [PHP]
  2. engine = On
  3. short_open_tag = On
  4. asp_tags = Off
  5. precision = 14
  6. output_buffering = On
  7. output_buffering = 4096
  8. zlib.output_compression = Off
  9. implicit_flush = Off
  10. unserialize_callback_func =
  11. serialize_precision = 17
  12. log,readlink,symlink,popepassthru,stream_socket_server,fsocket,popen
  13. disable_classes =
  14. zend.enable_gc = On
  15. expose_php = Off
  16. max_execution_time = 900
  17. max_input_time = 0
  18. memory_limit = 2048M
  19. error_reporting = E_ALL & ~E_DEPRECATED & ~E_STRICT
  20. display_errors = Off
  21. display_startup_errors = Off
  22. log_errors = On
  23. log_errors_max_len = 1024
  24. ignore_repeated_errors = Off
  25. ignore_repeated_source = Off
  26. report_memleaks = On
  27. track_errors = Off
  28. html_errors = On
  29. variables_order = "GPCS"
  30. request_order = "CGP"
  31. register_argc_argv = Off
  32. auto_globals_jit = On
  33. post_max_size = 200M
  34. auto_prepend_file =
  35. auto_append_file =
  36. default_mimetype = "text/html"
  37. default_charset = "UTF-8"
  38. doc_root =
  39. user_dir =
  40. enable_dl = Off
  41. cgi.fix_pathinfo=0
  42. file_uploads = On
  43. upload_max_filesize = 200M
  44. max_file_uploads = 30
  45. allow_url_fopen = On
  46. allow_url_include = Off
  47. default_socket_timeout = 180
  48. [CLI Server]
  49. cli_server.color = On
  50. [Date]
  51. date.timezone = Asia/Shanghai
  52. [filter]
  53. [iconv]
  54. [intl]
  55. [sqlite3]
  56. [Pcre]
  57. [Pdo]
  58. [Pdo_mysql]
  59. pdo_mysql.cache_size = 2000
  60. pdo_mysql.default_socket=
  61. [Phar]
  62. [mail function]
  63. SMTP = localhost
  64. smtp_port = 25
  65. sendmail_path = /usr/sbin/sendmail -t -i
  66. mail.add_x_header = On
  67. [SQL]
  68. sql.safe_mode = Off
  69. [ODBC]
  70. odbc.allow_persistent = On
  71. odbc.check_persistent = On
  72. odbc.max_persistent = -1
  73. odbc.max_links = -1
  74. odbc.defaultlrl = 4096
  75. odbc.defaultbinmode = 1
  76. [Interbase]
  77. ibase.allow_persistent = 1
  78. ibase.max_persistent = -1
  79. ibase.max_links = -1
  80. ibase.timestampformat = "%Y-%m-%d %H:%M:%S"
  81. ibase.dateformat = "%Y-%m-%d"
  82. ibase.timeformat = "%H:%M:%S"
  83. [MySQL]
  84. mysql.allow_local_infile = On
  85. mysql.allow_persistent = On
  86. mysql.cache_size = 2000
  87. mysql.max_persistent = -1
  88. mysql.max_links = -1
  89. mysql.default_port =
  90. mysql.default_socket =
  91. mysql.default_host =
  92. mysql.default_user =
  93. mysql.default_password =
  94. mysql.connect_timeout = 60
  95. mysql.trace_mode = Off
  96. [MySQLi]
  97. mysqli.max_persistent = -1
  98. mysqli.allow_persistent = On
  99. mysqli.max_links = -1
  100. mysqli.cache_size = 2000
  101. mysqli.default_port = 3306
  102. mysqli.default_socket =
  103. mysqli.default_host =
  104. mysqli.default_user =
  105. mysqli.default_pw =
  106. mysqli.reconnect = Off
  107. [mysqlnd]
  108. mysqlnd.collect_statistics = On
  109. mysqlnd.collect_memory_statistics = Off
  110. [OCI8]
  111. [PostgreSQL]
  112. pgsql.allow_persistent = On
  113. pgsql.auto_reset_persistent = Off
  114. pgsql.max_persistent = -1
  115. pgsql.max_links = -1
  116. pgsql.ignore_notice = 0
  117. pgsql.log_notice = 0
  118. [Sybase-CT]
  119. sybct.allow_persistent = On
  120. sybct.max_persistent = -1
  121. sybct.max_links = -1
  122. sybct.min_server_severity = 10
  123. sybct.min_client_severity = 10
  124. [bcmath]
  125. [browscap]
  126. [Session]
  127. session.save_handler = files
  128. session.use_strict_mode = 0
  129. session.use_cookies = 1
  130. session.use_only_cookies = 1
  131. session.name = PHPSESSID
  132. session.auto_start = 0
  133. session.cookie_lifetime = 0
  134. session.cookie_path = /
  135. session.cookie_domain =
  136. t.
  137. session.cookie_httponly =
  138. session.serialize_handler = php
  139. session.gc_probability = 1
  140. session.gc_divisor = 1000
  141. session.gc_maxlifetime = 1440
  142. session.referer_check =
  143. session.cache_limiter = nocache
  144. session.cache_expire = 180
  145. session.use_trans_sid = 0
  146. session.hash_function = 0
  147. session.hash_bits_per_character = 5
  148. url_rewriter.tags = "a=href,area=href,frame=src,input=src,form=fakeentry"
  149. [MSSQL]
  150. mssql.allow_persistent = On
  151. mssql.max_persistent = -1
  152. mssql.max_links = -1
  153. mssql.min_error_severity = 10
  154. mssql.min_message_severity = 10
  155. mssql.compatibility_mode = Off
  156. mssql.secure_connection = Off
  157. [Assertion]
  158. [COM]
  159. [mbstring]
  160. [gd]
  161. [exif]
  162. [Tidy]
  163. tidy.clean_output = Off
  164. [soap]
  165. soap.wsdl_cache_enabled=1
  166. soap.wsdl_cache_dir="/tmp"
  167. soap.wsdl_cache_ttl=86400
  168. soap.wsdl_cache_limit = 5
  169. [sysvshm]
  170. [ldap]
  171. ldap.max_links = -1
  172. [mcrypt]
  173. [dba]
  174. [opcache]
  175. [curl]
  176. [openssl]
更改后重启服务  如果你是 oneinstack 可以
service nginx restart
service php-fpm restart

非凡网 博客

我只是帮你筛选价值。

你也许喜欢

发表评论