php-fpm 使用 100% CPU,而 nginx 给出 404

php-fpm 使用 100% CPU,而 nginx 给出 404

我正在 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;
}

我有点陌生nginxfastcgi所以不太确定我应该关注什么配置。

我已经启用了 zend opcache,所以我认为它php-fpm不应该承受压力。这个假设正确吗?

我的一个朋友说这是预期的行为,在 2 核机器上它会 100% 运行。但我觉得难以置信。如果我进行静态文件加载测试,Nginx 的运行速度非常快。只是 PHP 让它变慢了。

想法?

答案1

Magento 是一款重量级的软件。是什么让您认为您的服务器在 500 名用户的性能测试中不会出现问题?当然,提供静态内容很快,但解析 Magento 包含的所有黑魔法 PHP……嗯,这对您的服务器来说是一项繁重的工作。

PHP 操作码缓存并不意味着您的 PHP 会像静态内容一样快。如果没有某种前端缓存(例如 Varnish 或 Squid),它仍然必须执行大量操作,包括一些繁重的 SQL 查询,因此整体性能将是每秒数十页加载到每秒 100 页加载,不会更多。(除非 Magento 自从我上次尝试以来以某种方式对其代码进行了大量的优化)

相关内容