网站首页 > 技术教程 正文
1、环境准备
沿用之前"nginx与php-fpm结合详解"的配置信息,并启动
2、查看php-fpm的信息
- 配置信息
pm = dynamic
pm.max_children = 5
pm.start_servers = 2
pm.min_spare_servers = 1
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中实现
猜你喜欢
- 2024-10-11 浅谈从PHP迁移至Golang(基础篇)(php传值到另一个php)
- 2024-10-11 相同逻辑的php与golang代码效率对比,最好语言落谁家…
- 2024-09-21 Promethues如何监控PHP(prometheus snmp监控)
- 2024-09-21 蓝易云 - 在centos中配置nginx+php的环境教程。
- 2024-09-21 Zabbix运维—监控php-fpm、redis服务
- 2024-09-21 Zabbix 5.2由浅入深之监控php-fpm
- 2024-09-21 PHP-FPM实现性能优化的方法(php-fpm 优化)
- 2024-09-21 PHP-FPM高负载的解决办法(php高负载解决方案)
- 2024-09-21 php-fpm的配置和优化(php-fpm调优)
- 2024-09-21 docker中运行php文件(docker php fpm)
你 发表评论:
欢迎- 最近发表
-
- Linux新手必看:几种方法帮你查看CPU核心数量
- linux基础命令之lscpu命令(linux中ls命令的用法)
- Linux lscpu 命令使用详解(linux常用ls命令)
- 如何查询 Linux 中 CPU 的数量?这几个命令要知道!
- 在linux上怎么查看cpu信息(linux如何查看cpu信息)
- 查看 CPU 的命令和磁盘 IO 的命令
- 如何在CentOS7上改变网卡名(centos怎么改网卡名字)
- 网工必备Linux网络管理命令(网工必备linux网络管理命令是什么)
- Linux 网络命令知多少(linux 网络 命令)
- Linux通过命令行连接wifi的方式(linux命令行连接无线网)
- 标签列表
-
- 下划线是什么 (87)
- 精美网站 (58)
- qq登录界面 (90)
- nginx 命令 (82)
- nginx .http (73)
- nginx lua (70)
- nginx 重定向 (68)
- Nginx超时 (65)
- nginx 监控 (57)
- odbc (59)
- rar密码破解工具 (62)
- annotation (71)
- 红黑树 (57)
- 智力题 (62)
- php空间申请 (61)
- 按键精灵 注册码 (69)
- 软件测试报告 (59)
- ntcreatefile (64)
- 闪动文字 (56)
- guid (66)
- abap (63)
- mpeg 2 (65)
- column (63)
- dreamweaver教程 (57)
- excel行列转换 (56)
本文暂时没有评论,来添加一个吧(●'◡'●)