Nginx

php-fpm 使用 100% CPU 和 nginx 給出 404

  • January 23, 2015

我在 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 正在減慢它的速度。

想法?

Magento 是一個重量級的軟體。是什麼讓您認為在 500 位使用者性能測試期間您的伺服器不會痛苦地尖叫?當然,提供靜態內容的速度很快,但是解析 Magento 包含的所有黑魔法 PHP……嗯,這對您的伺服器來說是一項繁重的工作。

PHP 操作碼記憶體並不意味著您的 PHP 將與靜態內容一樣快。如果沒有某種前端記憶體(例如 Varnish 或 Squid),它仍然需要做很多事情,包括一些繁重的 SQL 查詢,因此整體性能將從每秒幾十個頁面載入到每秒 100 個頁面載入不等秒,不多。(除非自從我上次嘗試以來,Magento 已經以某種方式優化了它的程式碼)

引用自:https://serverfault.com/questions/661779