由于Httpd进程增多,导致CPU占用100%问题 magento for version 2.2.3
前些天一直导致CPU无法控制的增多问题。
根据报错我设置了如下内容:
- 【Mysql】mysql.my.cnf 设置如下;
#InnoDB需要innodb buffer pool中处理缓存。所以非常需要有足够的InnoDB buffer pool空间。
innodb_buffer_pool_size = 2G - 【PHP】php..htaccess 设置如下;
//当发生 Fatal error: Allowed memory size of 33554432 bytes 时,设置如下
php_value memory_limit 2G - 【PHP】php./app/etc/.env.php 设置如下;
//开发模式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'
)
), - 【Apache】php.htaccess 目录设置如下;(它建立在apache 模式为woker MPM)
#StartServers
#服务器启动时建立的子进程数,默认值是”″。
#MaxClients
#允许同时伺服的最大接入请求数量.
#MaxClients
#任何超过MaxClients限制的请求都将进入等候队列
#MinSpareThreads
#最小空闲线程数,默认值是”″
#MaxSpareThreads
#设置最大空闲线程数。默认值是”″
#ThreadsPerChild
#每个子进程建立的常驻的执行线程数。默认值是25
#MaxRequestsPerChild
#设置每个子进程在其生存期内允许伺服的最大请求数量
<IfModule worker.c>
ThreadLimit
ServerLimit
StartServers
MaxClients
MinSpareThreads
MaxSpareThreads
ThreadsPerChild
MaxRequestsPerChild
</IfModule>prefork模式使用多个子进程,每个子进程只有一个线程。每个进程在某个确定的时间只能维持一个连接。在大多数平台上,Prefork MPM在效率上要比Worker MPM要高,但是内存使用大得多。
worker模式使用多个子进程,每个子进程有多个线程。每个线程在某个确定的时间只能维持一个连接。通常来说,在一个高流量的HTTP服务器 上,Worker MPM是个比较好的选择,因为Worker MPM的内存使用比Prefork MPM要低得多。
- 【Corn】使用过alekseon/module-cleanrunningjobs 管理 Cron;
- 【Toolbar】开启 PROFILER ;
$_SERVER['MAGE_PROFILER']=;
//或是 $_SERVER['MAGE_PROFILER'] = 'html';用于分析错误的函数;
- 【Toolbar】使用了
mirasvit
/module-profiler 来调试查看;
- 【Toolbar】使用了 vpietri/adm-quickdevbar 来调试查看;
- -其它
以上方案,只供参考。遇到问题请多参考Exception.php/debug.php 和 Apache/nginx/php-fpm/redis/mysql/other;