Nginx
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; }
我有點新
nginx
,fastcgi
所以不太確定我應該關注哪些配置。我已經啟用了zend opcache,所以我相信它
php-fpm
不應該處於壓力之下。這個假設正確嗎?我的一個朋友說它的預期行為,它會在 2 核機器上執行 100%。但我覺得很難相信。如果我進行靜態文件負載測試,Nginx 的執行速度非常快。它只是 PHP 正在減慢它的速度。
想法?
Magento 是一個重量級的軟體。是什麼讓您認為在 500 位使用者性能測試期間您的伺服器不會痛苦地尖叫?當然,提供靜態內容的速度很快,但是解析 Magento 包含的所有黑魔法 PHP……嗯,這對您的伺服器來說是一項繁重的工作。
PHP 操作碼記憶體並不意味著您的 PHP 將與靜態內容一樣快。如果沒有某種前端記憶體(例如 Varnish 或 Squid),它仍然需要做很多事情,包括一些繁重的 SQL 查詢,因此整體性能將從每秒幾十個頁面載入到每秒 100 個頁面載入不等秒,不多。(除非自從我上次嘗試以來,Magento 已經以某種方式優化了它的程式碼)