前些天一直致使CPU沒法控制的增多問題。php
根據報錯我設置了以下內容:html
#InnoDB須要innodb buffer pool中處理緩存。因此很是須要有足夠的InnoDB buffer pool空間。
innodb_buffer_pool_size = 2G
//當發生 Fatal error: Allowed memory size of 33554432 bytes 時,設置以下 php_value memory_limit 2G
//開發模式session爲db存儲; 'session' => array ( 'save' => 'db', ), //改在默認的file或redis ////--file 'session' => array ( 'save' => 'files', 'save_path' => '/var/www/session', ), ////--redis 'session' => array ( 'save' => 'redis', 'redis' => array ( 'host' => '127.0.0.1', 'port' => '6379', 'password' => '', 'timeout' => '2.5', 'persistent_identifier' => '', 'database' => '0', 'compression_threshold' => '2048', 'compression_library' => 'gzip', 'log_level' => '1', 'max_concurrency' => '6', 'break_after_frontend' => '5', 'break_after_adminhtml' => '30', 'first_lifetime' => '600', 'bot_first_lifetime' => '60', 'bot_lifetime' => '7200', 'disable_locking' => '0', 'min_lifetime' => '60', 'max_lifetime' => '2592000' ) ),
#StartServers #服務器啓動時創建的子進程數,默認值是」3″。 #MaxClients #容許同時伺服的最大接入請求數量. #MaxClients #任何超過MaxClients限制的請求都將進入等候隊列 #MinSpareThreads #最小空閒線程數,默認值是」75″ #MaxSpareThreads #設置最大空閒線程數。默認值是」250″ #ThreadsPerChild #每一個子進程創建的常駐的執行線程數。默認值是25 #MaxRequestsPerChild #設置每一個子進程在其生存期內容許伺服的最大請求數量 <IfModule worker.c> ThreadLimit 100 ServerLimit 256 StartServers 8 MaxClients 1200 MinSpareThreads 100 MaxSpareThreads 300 ThreadsPerChild 100 MaxRequestsPerChild 0 </IfModule>
prefork模式使用多個子進程,每一個子進程只有一個線程。每一個進程在某個肯定的時間只能維持一個鏈接。在大多數平臺上,Prefork MPM在效率上要比Worker MPM要高,可是內存使用大得多。
worker模式使用多個子進程,每一個子進程有多個線程。每一個線程在某個肯定的時間只能維持一個鏈接。一般來講,在一個高流量的HTTP服務器 上,Worker MPM是個比較好的選擇,由於Worker MPM的內存使用比Prefork MPM要低得多。mysql
$_SERVER['MAGE_PROFILER']=1; //或是 $_SERVER['MAGE_PROFILER'] = 'html';
用於分析錯誤的函數;nginx
mirasvit
/module-profiler 來調試查看;
以上方案,只供參考。遇到問題請多參考Exception.php/debug.php 和 Apache/nginx/php-fpm/redis/mysql/other;git
更多資料請見:http://www.javashuo.com/article/p-eteoevbu-hy.htmlgithub