pm.max_children = 5

pm.start_servers = 2

pm.min_spare_servers = 1

phpfpm500并发10nginx与phpfpm若何抗并发 Vue.js

pm.max_spare_servers = 3

进程数

3、编写测试文件

web文件-test.php

<?php

set_time_limit(0);

sleep(10);

echo \公众test.php->\"大众.time();

测试文件-pcntl.php

<?php

function postXmlcurl($url,$xml=\公众\"大众,$second = 30)

{

$ch = curl_init();

//设置超时

curl_setopt($ch, CURLOPT_TIMEOUT, $second);

curl_setopt($ch,CURLOPT_URL, $url);

curl_setopt($ch,CURLOPT_SSL_VERIFYPEER,FALSE);//TRUE

curl_setopt($ch,CURLOPT_SSL_VERIFYHOST,FALSE);//严格校验 2

//设置header

curl_setopt($ch, CURLOPT_HEADER, FALSE);

//哀求结果为字符串且输出到屏幕上

curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);

//post提交办法

curl_setopt($ch, CURLOPT_POST, TRUE);

curl_setopt($ch, CURLOPT_POSTFIELDS, $xml);

//运行curl

$data = curl_exec($ch);

//返回结果

if($data){

curl_close($ch);

return $data;

} else {

$error = curl_errno($ch);

curl_close($ch);

return \公众error->\公众.$error;

}

}

$count = 10;

$url = \"大众http://127.0.0.1:81/test.php\公众;

$pidArr = array();

for ($i=0;$i<$count;$i++) {

$pid = pcntl_fork();

if ($pid<0) {

exit(\"大众fork is error.\公众);

} elseif ($pid==0) {

echo posix_getpid().'-->'.postXmlCurl($url),PHP_EOL;

exit;

} else {

$pidArr[$pid] = $pid;

}

}

while (1) {

if (!count($pidArr)) {

echo \"大众over\"大众,PHP_EOL;

break;

}

$pid = pcntl_wait($status,WUNTRACED);

if ($pid>0) {

echo \"大众{$pid} is over-->\"大众,$status,PHP_EOL;

unset($pidArr[$pid]);

}

}

实行pcntl.php文件,然后查看php-fpm进程数

从进程数可以看出,php-fpm根据配置文件内容和实际情形,动态创建子进程来处理要求。
当达到能够创建的最大值时,只能壅塞。
一个个地进行实行。

4、优化进程池配置

进程数优化

pm = dynamic

pm.max_children = 300

pm.start_servers = 20

pm.min_spare_servers = 5

pm.max_spare_servers = 35

最大要求数优化

pm.max_requests = 10240

备注:这个用来处理由于PHP解析器或引用的第三方库时,造成的内存透露问题。
最大要求数:指一个php-fpm的事情进程在处理多少个要求后就终止掉。

最长实行韶光优化(php.ini)

request_terminate_timeout = 20

备注: 这个是用来处理由于PHP实行韶光超长而报502缺点的办理。
这个时长配置可以在php.ini(max_execution_time)或php-fpm.conf中配置均可,为了不影响全局配置,可在php-fpm.conf中实现