【发布时间】:2015-12-23 15:22:13
【问题描述】:
我们正在开发一个在 (NginX + PHP-FPM) 上使用 Drupal 7 的应用程序。但在性能测试期间,我们观察到 Applications Server 消耗了非常高的 CPU。平均 CPU 消耗在 90% 的范围内(最大处理器被 PHP-FPM 消耗)。内存消耗非常低。
我们已经尝试过各种并发用户负载,例如 25-50-100。但即使有这种用户负载,我们也观察到 CPU 消耗约为 90%,因为响应时间非常长。
我们使用 4 核 CPU 和 RHEL (AWS EC2) 操作系统。 应用流程为反向代理(Nginx)->应用服务器(Drupal 7+NginX+PHP-FPM)
以下是我所做的配置更改-
nginx.conf:-
user nginx;
worker_processes 4;
error_log /var/log/nginx/error.log;
pid /var/run/nginx.pid;
worker_rlimit_nofile 20480;
events {
use epoll;
worker_connections 10240;
multi_accept on;
}
http {
include /etc/nginx/mime.types;
default_type application/octet-stream;
log_format main '$remote_addr - $remote_user [$time_local] "$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;
server_tokens off;
keepalive_timeout 65;
gzip on;
...
}
virtual.conf:-
location ~ '\.php$|^/update.php' {
fastcgi_pass unix:/var/run/php-fpm/php-fpm.sock;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_param SCRIPT_NAME $fastcgi_script_name;
fastcgi_buffer_size 128k;
fastcgi_buffers 256 16k;
fastcgi_busy_buffers_size 256k;
fastcgi_temp_file_write_size 256k;
include fastcgi_params;
}
php-fpm.conf:-
emergency_restart_threshold = 10
emergency_restart_interval = 1m
process_control_timeout = 15s
daemonize = no
php-fpm/www.conf:-
listen = /var/run/php-fpm/php-fpm.sock
listen.owner = nginx
listen.group = nginx
listen.mode = 0664
user = nginx
group = nginx
pm = dynamic
pm.max_children = 50
pm.start_servers = 5
pm.min_spare_servers = 5
pm.max_spare_servers = 35
有人可以指导我们如何解决这个问题吗?
【问题讨论】:
-
可能没有足够的信息来诊断问题,而无法查看您的服务器是如何配置的。您使用的是什么大小的实例?你安装的是什么版本的php?你在使用 php 优化器吗?您是否进行了任何分析以查看 CPU 的使用位置?您是否启用了任何缓存?
-
您使用的是 c4.xlarge 实例大小吗?无论如何,对于一个平均规模的网站来说,这应该足够了。只要其他一切都正确完成。
-
以下是所需的系统信息:\n 1. Linux 是 *el6.x86_64(AWS rhel 实例,四核) 2. RAM 是 8 GB 3. PHP 版本 5.3.3 4. 没有 PHP使用了优化器 5. 没有启用缓存 6. 没有内置分析 我们正在使用 JMeter 测试性能
-
您正在使用配置为“开发”状态的 PHP。我将在下面提供有关您可以采取哪些措施来提高性能的答案。
标签: php nginx drupal amazon-ec2