PHP服务优化

PHP配置⽂件

1.php程序配置管理⽂件/etc/php.ini,主要调整⽇志、⽂件上传、禁⽌危险函数、关闭版本号显示、等

#实际上公司的php开发⼈员会在代码中指定php错误⽇志输出的位置。
#;;;;;;;;;;;;;;;;;
# Error logging ; #错误⽇志设置
#;;;;;;;;;;;;;;;;;
error_reporting = E_ALL # 记录PHP所有错误⽇志
log_errors = On # 开启错误⽇志
log_errors_max_len = 1024 #
error_log = /var/log/php_error.log # 错误⽇志存储路径
display_error = Off # 错误信息会在浏览器显示,⽣产环境建议关闭
expose_php = Off # 关闭php版本信息
date.timezone = Asia/Shanghai # 调整时区,默认PRC
#;;;;;;;;;;;;;;;
# File Uploads ; #⽂件上传设置
#;;;;;;;;;;;;;;;
file_uploads = On # 允许⽂件上传
upload_max_filesize = 300M # 允许上传⽂件的最⼤⼤⼩
post_max_size = 300M # 允许客户端单个POST请求发送的最⼤数据
max_file_uploads = 20 # 允许同时上传的⽂件的最⼤数量
memory_limit = 128M # 每个脚本执⾏最⼤内存
#php禁⽌危险函数执⾏(取决于实际情况,需要和开发沟通)
disable_functions = chown,chmod,pfsockopen,phpinfo

php危险函数禁⽤参考列表
2.php-fpm进程管理配置⽂件/etc/php-fpm.conf

#第⼀部分,fpm配置
[root@nginx ~]# cat /etc/php-fpm.conf
....
;include=etc/fpm.d/*.conf
....
#第⼆部分,全局配置
[root@nginx ~]# cat /etc/php-fpm.d/www.conf
[global]
;pid = /var/log/php-fpm/php-fpm.pid #pid⽂件存放的位置
;error_log = /var/log/php-fpm.log #错误⽇志存放的位置
;log_level = error #⽇志级别, alert, error, warning, notice,
debug
rlimit_files = 65535 #php-fpm进程能够使⽤的⽂件描述符
#第三部分,进程池定义
[www] #池名称
user = www #进程运⾏的⽤户
group = www #进程运⾏的组
;listen = /dev/shm/php-fpm.sock #监听在本地socket⽂件
listen = 127.0.0.1:9000 #监听在本地tcp的9000端⼝
;listen.allowed_clients = 127.0.0.1 #允许访问FastCGI进程的IP,any不限制
pm = dynamic #动态调节php-fpm的进程数
pm.max_children = 512 #最⼤启动的php-fpm进程数 (峰值就到512个进程)
pm.start_servers = 32 #初始启动的php-fpm进程数
pm.min_spare_servers = 32 #最少的空闲php-fpm进程数
pm.max_spare_servers = 64 #最⼤的空闲php-fpm进程数
pm.max_requests = 1500 #每⼀个进程能响应的请求数
pm.process_idle_timeout = 15s;
#第四部分,⽇志相关
php_flag[display_errors] = off
php_admin_value[error_log] = /var/log/phpfpm_error.log
php_admin_flag[log_errors] = on
#fpm慢⽇志
request_slowlog_timeout = 5s #php脚本执⾏超过5s的⽂件
slowlog = /var/log/php_slow.log #记录⾄该⽂件中

2 PHP监控模块

3.php-fpm监控模块,⽤于监控php-fpm状态使⽤

[root@nginx ~]# vim /etc/php-fpm.d/www.conf
pm.status_path = /phpfpm_status #开启php的状态⻚⾯
#修改nginx配置
[root@nginx conf.d]# cat /etc/nginx/conf.d/fpm.conf
server {
 listen 80;
 server_name php.bgx.com;
 location / {
 root /code;
 index index.php;
 }
 #新增如下配置
 location /phpfpm_status {
 fastcgi_pass 127.0.0.1:9000;
 fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
 include fastcgi_params;
 }
 location ~ \.php$ {
 fastcgi_pass 127.0.0.1:9000;
 fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
 include fastcgi_params;
 }
 }

4.访问测试phpfpm_status状态⻚⾯

[root@nginx ~]# curl http://127.0.0.1/phpfpm_status
pool: www #fpm池名称,⼤多数为www
process manager: dynamic #动态管理phpfpm进程
start time: 05/Jul/2016 #启动时间,如果重启会发⽣变化
start since: 409 #php-fpm运⾏时间
accepted conn: 22 #当前池接受的连接数
listen queue: 0 #请求等待队列,如果这个值不为0,那么需要增加FPM的进程数量
max listen queue: 0 #请求等待队列最⾼的数量
listen queue len: 128 #请求等待队列的⻓度
idle processes: 4 #php-fpm空闲的进程数量
active processes: 1 #php-fpm活跃的进程数量
total processes: 5 #php-fpm总的进程数量
max active processes: 2 #php-fpm最⼤活跃的进程数量(FPM启动开始计算)
max children reached: 0 #进程最⼤数量限制的次数,如果数量不为0,则说明phpfpm最⼤进
程数量过⼩,可以适当调整。

3 PHP⽇志管理

php⽇志分为错误⽇志和慢⽇志。

1.通过 upstream_response_time 可以监控 Nginx 到 php 所消耗的时间

#Nginx在log_format中添加upstream_response_time
#编写⼀个php代码,然后观察处理事件
<?php
 echo "oldxu test ok";
 sleep(1);
?>

2.php 的 error ⽇志说明。

#编写php代码测试
<?php
 echo "oldxu test ok";
 echo 2/0;
?>
#注意:如果启⽤display_errors = On,会直接将错误显示⽹⻚上。

3.php-fpm的慢⽇志,php只要处理超过1s就会有记录

slowlog = /tmp/phpslow.log
request_slowlog_timeout = 1s
#编写php代码测试
<?php
 echo "oldxu test ok";
 sleep(2);
?>

4 PHP最终配置

5.PHP-FPM配置⽂件 4核16G、4核32G

[root@nginx ~]# cat /etc/php-fpm.d/www.conf
[global]
pid = /var/run/php-fpm.pid
error_log = /var/log/php-fpm.log
log_level = warning
rlimit_files = 655350
events.mechanism = epoll
[www]
user = nginx
group = nginx
listen = 127.0.0.1:9000
listen.owner = www
listen.group = www
listen.mode = 0660
listen.allowed_clients = 127.0.0.1
pm = dynamic
pm.max_children = 512
pm.start_servers = 32
pm.min_spare_servers = 32
pm.max_spare_servers = 64
pm.process_idle_timeout = 15s;
pm.max_requests = 2048
pm.status_path = /phpfpm_status
#php-www模块错误⽇志
php_flag[display_errors] = off
php_admin_value[error_log] = /var/log/php/php-www.log
php_admin_flag[log_errors] = on
#php慢查询⽇志
request_slowlog_timeout = 5s
slowlog = /var/log/php-slow.log
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值