为500万次每日浏览量优化Nginx + PHP-FPM【JAVA教程】

!
也想出现在这里? 联系我们
信息

为500万次每日浏览量优化Nginx + PHP-FPM,第1张

概述为500万次每日浏览量优化Nginx + PHP-FPM

我们运行几个高容量的网站,每天产生大约500万的综合浏览量。 在我们预计增长的时候,我们拥有最多的矫枉过正的服务器,但是我们有一些活跃用户的报告称,该网站在第一个浏览量上有时会变慢。 我每隔一段时间就会看到一次,其中第一个浏览量需要3-5秒,然后在这一天剩下的时间内即可。 在过去的24小时里,这种事情发生在我身上的可能是两次,所以还不足以弄清楚发生了什么。 我们网站上的每个页面都使用PHP,但是发生在我身上的一个时间是在没有任何数据库调用的PHP页面上,这使得我认为这个问题仅限于Nginx,PHP-FPM或networking设置。

我们有3个Nginx服务器在负载均衡器后面运行。 我们的数据库在一个集群上是分开的 我包含了我们的configuration文件Nginx和PHP-fpm以及我们目前的RAM使用情况和PHP-FPM状态。 这是基于一天的中间(我们的平均stream量)。 请大家看看,如果在我的设置中看到任何红旗,或者有进一步优化的build议,请告诉我。

每个Nginx服务器的规格:

OS: CentOS 7 RAM: 128GB cpu: 32 cores (2.4Ghz each) Drives: 2xSSD on RAID 1

RAM使用(free -g)

sed:-i可能不适用于Mac OS X上的stdin

使用脚本将.csv文件加载到MysqL数据库中

对定制共享库的未定义引用

NVCC试图链接不必要的对象

最适合Mac OS X和linux兼容的编译语言

total used free shared buff/cache available Mem: 125 15 10 3 100 103 Swap: 15 0 15

PHP-FPM状态(IE: http:// server1_ip / status )

pool: www process manager: dynamic start time: 03/Mar/2016:03:42:49 -0800 start since: 1171262 accepted conn: 69827961 Listen queue: 0 max Listen queue: 0 Listen queue len: 0 IDle processes: 1670 active processes: 1 total processes: 1671 max active processes: 440 max children reached: 0 slow requests: 0

PHP-fpmconfiguration文件:

[www] user = Nginx group = Nginx Listen = /var/opt/remi/PHP70/run/PHP-fpm/PHP-fpm.sock Listen.owner = Nginx Listen.group = Nginx Listen.mode = 0660 Listen.allowed_clIEnts = 127.0.0.1 pm = dynamic pm.max_children = 6000 pm.start_servers = 1600 pm.min_spare_servers = 1500 pm.max_spare_servers = 2000 pm.max_requests = 1000 pm.status_path = /status slowlog = /var/opt/remi/PHP70/log/PHP-fpm/www-slow.log PHP_admin_value[error_log] = /var/opt/remi/PHP70/log/PHP-fpm/www-error.log PHP_admin_flag[log_errors] = on PHP_value[session.save_handler] = files PHP_value[session.save_path] = /var/opt/remi/PHP70/lib/PHP/session PHP_value[soap.wsdl_cache_dir] = /var/opt/remi/PHP70/lib/PHP/wsdlcache

Nginxconfiguration文件:

user Nginx; worker_processes 32; error_log /var/log/Nginx/error.log; pID /run/Nginx.pID; events { worker_connections 1000; multi_accept on; use epoll; } http { log_format main \’$remote_addr – $remote_user [$time_iso8601] \”$request\” \’ \’$status $body_bytes_sent \”$http_referer\” \’ \’\”$http_user_agent\” \”$http_x_forwarded_for\”\’; access_log /var/log/Nginx/access.log main; sendfile on; tcp_nopush on; tcp_nodelay on; keepalive_timeout 10 10; send_timeout 60; types_hash_max_size 2048; clIEnt_max_body_size 50M; clIEnt_body_buffer_size 5m; clIEnt_body_timeout 60; clIEnt_header_timeout 60; fastcgi_buffers 256 16k; fastcgi_buffer_size 128k; fastcgi_connect_timeout 60s; fastcgi_send_timeout 60s; fastcgi_read_timeout 60s; fastcgi_busy_buffers_size 256k; fastcgi_temp_file_write_size 256k; reset_timedout_connection on; server_names_hash_bucket_size 100; #compression gzip on; gzip_vary on; gzip_min_length 10240; gzip_proxIEd expired no-cache no-store private auth; gzip_types text/plain text/CSS text/xml text/JavaScript application/x-JavaScript application/JavaScript application/xml; gzip_disable \”MSIE [1-6].\”; include /etc/Nginx/mime.types; default_type application/octet-stream; # Load modular configuration files from the /etc/Nginx/conf.d directory. # See http://Nginx.org/en/docs/ngx_core_module.HTML#include # for more information. include /etc/Nginx/conf.d/*.conf; server { Listen 80 default_server; Listen [::]:80 default_server; server_name domain1.com; root /folderpath; location / { index index.PHP; } location = /favicon.ico { access_log off; log_not_found off; } location = /robots.txt { access_log off; log_not_found off; } #server status location /server-status { stub_status on; access_log off; auth_basic \”Restricted\”; auth_basic_user_file /etc/Nginx/.htpasswd; } location = /status { access_log off; allow 127.0.0.1; auth_basic \”Restricted\”; auth_basic_user_file /etc/Nginx/.htpasswd; fastcgi_pass unix:/var/opt/remi/PHP70/run/PHP-fpm/PHP-fpm.sock; fastcgi_index index.PHP; fastcgi_param SCRIPT_filename $document_root$fastcgi_script_name; include fastcgi_params; } location ~ .PHP$ { try_files $uri =404; fastcgi_pass unix:/var/opt/remi/PHP70/run/PHP-fpm/PHP-fpm.sock; fastcgi_index index.PHP; fastcgi_param SCRIPT_filename $document_root$fastcgi_script_name; include fastcgi_params; }

更新:

我按照下面的build议安装了opcache。 不知道它是否解决了这个问题。 这是我的设置

opcache.enable=1 opcache.memory_consumption=1024 opcache.interned_strings_buffer=64 opcache.max_accelerated_files=32531 opcache.max_wasted_percentage=10

从pdf中删除图像(透明/ Alpha通道)

停止在与sudo运行的脚本的中间根

如何保证指定的文件是从PHP的BSD / linux上的设备?

在linux上的gdb中加载核心文件时,如何预先加载目录库path

从Mac的交叉编译C ++ / QT的windows,linux

2个小技巧:

如果你使用opcache,监视它来检查它的配置(特别是内存大小)是否正常,并且避免OOM重置,你可以使用https://github.com/rlerdorf/opcache-status (一个单一的PHP页面)

增加pm.max_requests以继续使用相同的进程

总结

以上是内存溢出为你收集整理的为500万次每日浏览量优化Nginx + PHP-FPM全部内容,希望文章能够帮你解决为500万次每日浏览量优化Nginx + PHP-FPM所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

© 版权声明
THE END
喜欢就支持一下吧
点赞188 分享
评论 抢沙发

请登录后发表评论

    请登录后查看评论内容