PHP 环境变量
LSAPI 环境变量
Section titled “LSAPI 环境变量”这些环境变量控制 lsphp 工作进程的行为。在 httpd_config.conf 的 extprocessor 配置中设置:
extprocessor lsphp { type lsapi ... env PHP_LSAPI_CHILDREN=10 env LSAPI_MAX_REQS=5000 env PHP_LSAPI_MAX_IDLE=300 env LSAPI_AVOID_FORK=0 env LSAPI_ACCEPT_NOTIFY=1}| 变量 | 默认值 | 说明 |
|---|---|---|
PHP_LSAPI_CHILDREN | 10 | PHP 工作进程数。每个进程一次处理一个请求。 |
LSAPI_MAX_REQS | 10000 | 工作进程在退出并被替换前处理的请求数。较低的值有助于防止内存泄漏。 |
PHP_LSAPI_MAX_IDLE | 300 | 工作进程空闲多少秒后被终止。 |
LSAPI_AVOID_FORK | 0 | 设为 1 使用 exec() 代替 fork() 创建新工作进程。在禁用 overcommit 的系统上有用。 |
LSAPI_ACCEPT_NOTIFY | 1 | 子进程接受连接时通知父进程。启用更好的负载均衡。 |
LSAPI_PGRP_MAX_IDLE | 300 | 整个进程组空闲多少秒后所有工作进程退出。 |
LSAPI_MAX_IDLE_CHILDREN | PHP_LSAPI_CHILDREN / 3 | 保持活动的最大空闲子进程数。 |
LSAPI_MAX_PROCESS_TIME | 300 | 单个请求的最大处理秒数,超过后工作进程将被终止。 |
PHP_LSAPI_CHILDREN 的大小调整
Section titled “PHP_LSAPI_CHILDREN 的大小调整”子进程数直接影响并发能力和内存使用。
计算公式:
PHP_LSAPI_CHILDREN = 可用内存_MB / 每工作进程_MB典型的每工作进程内存使用:
| 应用 | 每工作进程内存 |
|---|---|
| 静态 PHP(phpinfo) | 20-30 MB |
| WordPress | 40-60 MB |
| Laravel | 50-80 MB |
| Magento | 80-120 MB |
示例: 一台有 4 GB 可用内存运行 WordPress 的服务器:
4096 MB / 60 MB = ~68 个工作进程(保守值:50)将 extprocessor 中的 maxConns 设为与 PHP_LSAPI_CHILDREN 一致。
php.ini 位置
Section titled “php.ini 位置”每个 lsphp 版本有自己的 php.ini:
/usr/local/lsws/lsphp84/etc/php/8.4/litespeed/php.ini如果此文件不存在,lsphp 会回退到:
/usr/local/lsws/lsphp84/etc/php.ini查找当前活动的配置:
/usr/local/lsws/lsphp84/bin/lsphp -i | grep "Loaded Configuration File"常用 php.ini 调优
Section titled “常用 php.ini 调优”内存和上传限制
Section titled “内存和上传限制”memory_limit = 256Mupload_max_filesize = 64Mpost_max_size = 64Mmax_execution_time = 300max_input_time = 300max_input_vars = 5000OPcache 设置
Section titled “OPcache 设置”OPcache 对 PHP 性能至关重要。启用并调优它:
opcache.enable = 1opcache.memory_consumption = 256opcache.interned_strings_buffer = 16opcache.max_accelerated_files = 10000opcache.revalidate_freq = 60opcache.validate_timestamps = 1opcache.save_comments = 1opcache.fast_shutdown = 1对于代码不经常变更的生产服务器:
opcache.validate_timestamps = 0这会禁用文件修改检查。部署新代码后必须重启 lsphp。
session.save_handler = filessession.save_path = /tmpsession.gc_maxlifetime = 1440对于多服务器环境,使用 Redis 或 Memcached:
session.save_handler = redissession.save_path = "tcp://127.0.0.1:6379"display_errors = Offlog_errors = Onerror_log = /var/log/php/error.logerror_reporting = E_ALL & ~E_DEPRECATED & ~E_STRICT使用 LiteHTTPD 按目录覆盖 PHP 设置
Section titled “使用 LiteHTTPD 按目录覆盖 PHP 设置”安装 LiteHTTPD 模块后,您可以在 .htaccess 中按目录覆盖 php.ini 的值:
php_value memory_limit 512Mphp_value upload_max_filesize 128Mphp_value post_max_size 128Mphp_flag display_errors Off修改 httpd_config.conf 中的环境变量后:
systemctl restart lsws修改 php.ini 后:
# 完全重启systemctl restart lsws
# 或仅平滑重启 lsphpkillall -USR1 lsphp监控 PHP 工作进程
Section titled “监控 PHP 工作进程”查看当前 lsphp 进程数:
ps aux | grep lsphp | grep -v grep | wc -l监控每个工作进程的内存使用:
ps -C lsphp -o pid,rss,vsz,pcpu,args --sort=-rss