我正在 Nginx 上使用 Magento CE,它运行良好。
当我进行 500 个用户负载测试时,问题就开始了。该php-fpm
过程占用了所有 CPU 的 100%,我开始收到 404 作为响应。
这是我的 nginx 配置
fastcgi_cache_path /var/run/nginx-cache levels=1:2 keys_zone=magento:100m inactive=60m;
fastcgi_cache_key "$scheme$request_method$host$request_uri";
fastcgi_cache_use_stale error timeout invalid_header http_500;
fastcgi_ignore_headers Cache-Control Expires Set-Cookie;
server {
...
location ~ \.php$ {
try_files $uri =404;
expires off;
fastcgi_cache magento;
fastcgi_cache_valid 200 60m;
fastcgi_cache_methods GET HEAD;
add_header X-Fastcgi-Cache $upstream_cache_status;
fastcgi_cache_bypass $no_cache;
fastcgi_no_cache $no_cache;
fastcgi_read_timeout 900s;
fastcgi_index index.php;
fastcgi_pass unix:/var/run/php5-fpm.sock;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include /etc/nginx/fastcgi_params;
}
我有点陌生nginx
,fastcgi
所以不太确定我应该关注什么配置。
我已经启用了 zend opcache,所以我认为它php-fpm
不应该承受压力。这个假设正确吗?
我的一个朋友说这是预期的行为,在 2 核机器上它会 100% 运行。但我觉得难以置信。如果我进行静态文件加载测试,Nginx 的运行速度非常快。只是 PHP 让它变慢了。
想法?
答案1
Magento 是一款重量级的软件。是什么让您认为您的服务器在 500 名用户的性能测试中不会出现问题?当然,提供静态内容很快,但解析 Magento 包含的所有黑魔法 PHP……嗯,这对您的服务器来说是一项繁重的工作。
PHP 操作码缓存并不意味着您的 PHP 会像静态内容一样快。如果没有某种前端缓存(例如 Varnish 或 Squid),它仍然必须执行大量操作,包括一些繁重的 SQL 查询,因此整体性能将是每秒数十页加载到每秒 100 页加载,不会更多。(除非 Magento 自从我上次尝试以来以某种方式对其代码进行了大量的优化)