前些天一直致使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