config_global.php$_config[memory][redis][pconnect] 1; 默认0 改成1nginx 优化1.keepalive_timeout 60连接超时时间2. FastCGI 超时时间过长300 秒 5分钟fastcgi_connect_timeout 300;fastcgi_send_timeout 300;fastcgi_read_timeout 300;3. gzip_comp_level6Gzip 压缩级别MySQL 优化1.max_allowed_packet 128M# 重要原100GB修改128M2.innodb_log_file_size 512M# 重做日志大小提升写入性能减少刷盘频率修改 innodb_log_file_size 必做删除旧 InnoDB 日志文件否则 MySQL 启动失败停止 MySQL宝塔面板 → 数据库 → MySQL → 停止SSH 登录服务器执行命令路径和你的 datadir 一致rm -rf /www/server/data/ib_logfile0 /www/server/data/ib_logfile13.table_open_cache 2000# 原384适配Discuz!多表特性提升表缓存效率4.table_definition_cache 4096# 原4005.performance_schema_max_table_instances 2000# 原4006.tmp_table_size 64M# 原128M避免临时表占过多内存7.max_heap_table_size 64M# 原128M适配临时表减少内存占用8.innodb_read_io_threads 8# 原44核服务器提升到8提升读IO并发9.innodb_write_io_threads 8# 原4提升写IO并发10.innodb_max_dirty_pages_pct 75# 原90降低脏页比例减少刷盘卡顿11.join_buffer_size 1024K# (性能调整里面设置)缩小避免每个连接占用过多内存12.long_query_time2# 原3秒缩短到2秒更早发现慢查询13.innodb_buffer_pool_size 4096M14.innodb_flush_log_at_trx_commit 2#性能优先每秒刷盘兼顾安全性15.skip-name-resolve #强烈建议您取消这一项的注释去掉最前面的#16.max_connections 500 #从300 增加到500最大并发连接数17.table_open_cache 4096 # 原384太小 Discuz! 有大量表 频繁打开 / 关闭表性能下降18.key_buffer_size 64M # 原384太大19.log_queries_not_using_indexesoff #或者加#注释#log_queries_not_using_indexesoff20.binlog_expire_logs_seconds 2592002592003 天数据库 二进制日志21.thread_cache_size 642 核 / 4 核机器30~64足够redis优化1.将maxmemory设置为物理内存的10%-15%redis --- 性能调整 ---maxmemory设置15362.头部第2行下面直接插入一下代码maxmemory-policy allkeys-lru maxmemory-samples 10 内存管理核心 maxmemory1610612736# 1.5GB与MySQL 4GB共存maxmemory-policyallkeys-lru# Discuz! 缓存专用所有键均可淘汰maxmemory-samples10# LRU采样精度提升淘汰准确性修改 添加好 如下图3.开启主动内存碎片整理redis配置文件里面搜索# a good idea to leave the defaults untouched.# a good idea to leave the defaults untouched.下面添加一下代码# 启用主动内存碎片整理 (关键优化) activedefrag yes active-defrag-ignore-bytes 100mb active-defrag-threshold-lower 20 active-defrag-threshold-upper 100 active-defrag-cycle-min 5 active-defrag-cycle-max 25修改 添加好 如下图这样配置后Redis 将启用主动内存碎片整理设置阈值下限为20%上限为100%CPU使用率在5%-25%之间4. 惰性删除避免阻塞lazyfree-lazy-eviction yes #原no淘汰时异步释放内存lazyfree-lazy-expire yes #原no过期键异步删除lazyfree-lazy-server-del yes #原no内部删除命令异步化replica-lazy-flush no #原no复制全量同步保持阻塞更安全直接复制下面的代码 替换lazyfree-lazy-eviction yes lazyfree-lazy-expire yes lazyfree-lazy-server-del yes replica-lazy-flush yes注意上面的 第1 -- 4 步 必须 重启Redis服务 才能使配置生效5.首先在宝塔面板中安装redis修改config/config_global.php文件内容如下方法一只需要修改下面2个地方$_config[memory][redis][server] 127.0.0.1;$_config[memory][redis][requirepass] redis密码;宝塔redis性能调整redis加密码 比较安全 需要两个号地方设置一样的密码1.redis—–性能调整—–requirepass6.PHP8.0—–Session配置—–requirepass方法二上面不行 再用下面这个$_config[memory][prefix] 3DAD6r_; $_config[memory][redis][server] 127.0.0.1; $_config[memory][redis][port] 6379; $_config[memory][redis][pconnect] 1; $_config[memory][redis][timeout] ; $_config[memory][redis][requirepass] redis密码;宝塔redis性能调整requirepass设置的这个密码 $_config[memory][redis][serializer] 1;保存完成后重启php和Nginx内存接口的主要设置位于/config/config_global.php 当中您可以通过编辑 config_global.php 进行高级设置详细参考 discuz config_global.php文件设置说明PHP 优化一、php.ini 核心优化立即修改配置项当前值优化后值理由memory_limit128M512MDiscuz! 某些插件/后台操作可能超过128M1024M更稳健且总内存可控。post_max_size50M64M与上传大小匹配预留余量。upload_max_filesize50M64M同上。max_input_vars未设置默认10003000Discuz! 某些复杂表单如权限设置可能超过1000设为3000安全。session.cookie_httponly空1禁止 JavaScript 访问会话 Cookie防 XSS 窃取。session.cookie_samesite空Lax缓解 CSRF 攻击现代浏览器支持。cgi.fix_pathinfo10在 Nginx PHP-FPM 环境下设为 0 可避免潜在的文件解析漏洞推荐。error_reportingE_ALL ~E_NOTICEE_ALL ~E_DEPRECATED ~E_STRICT生产环境忽略废弃与严格标准提示减少日志量。display_errorsOffOff保留生产环境必须关闭。log_errorsOnOn保留开启错误日志便于排查问题。date.timezonePRCAsia/Shanghai更标准的时区写法功能相同。disable_functions已有列表追加proc_closeproc_get_statusproc_niceproc_terminate进一步限制危险的进程操作函数。expose_phpOffOff保留隐藏 PHP 版本。max_execution_tim 30PHP-FPM优化也是在 PHP里面设置 PHP有个FPM配置文件参数原值优化后理由pm.max_children3060最大子进程数按服务器内存计算1核2G202核4G404核8G608核16G80pm.max_spare_servers3030空闲进程数不宜过多30 足够应对突发。pm.max_requests未设1000在pm.max_spare_servers下面新增pm.max_requests 2000新增每个子进程处理1000个请求后重启防内存泄漏request_terminate_timeout600300600 秒10 分钟过长慢请求堆积会耗尽进程。Discuz! 正常请求应在 1~2 秒内完成120 秒已是极大宽容。request_slowlog_timeout3010合理Discuz! 复杂操作如数据统计可能慢30 秒合适slowlogvar/log/slow.log/www/wwwlogs/php-slow.log建议使用绝对路径统一日志目录便于管理。php_admin_value安全指令无增加强制覆盖 php.ini 中可能被绕过的设置增强安全性与一致性。opcache.jit1205
nginx 优化 MySQL优化 redis优化 PHP8.0优化(Discuz!版)
发布时间:2026/5/15 21:02:50
config_global.php$_config[memory][redis][pconnect] 1; 默认0 改成1nginx 优化1.keepalive_timeout 60连接超时时间2. FastCGI 超时时间过长300 秒 5分钟fastcgi_connect_timeout 300;fastcgi_send_timeout 300;fastcgi_read_timeout 300;3. gzip_comp_level6Gzip 压缩级别MySQL 优化1.max_allowed_packet 128M# 重要原100GB修改128M2.innodb_log_file_size 512M# 重做日志大小提升写入性能减少刷盘频率修改 innodb_log_file_size 必做删除旧 InnoDB 日志文件否则 MySQL 启动失败停止 MySQL宝塔面板 → 数据库 → MySQL → 停止SSH 登录服务器执行命令路径和你的 datadir 一致rm -rf /www/server/data/ib_logfile0 /www/server/data/ib_logfile13.table_open_cache 2000# 原384适配Discuz!多表特性提升表缓存效率4.table_definition_cache 4096# 原4005.performance_schema_max_table_instances 2000# 原4006.tmp_table_size 64M# 原128M避免临时表占过多内存7.max_heap_table_size 64M# 原128M适配临时表减少内存占用8.innodb_read_io_threads 8# 原44核服务器提升到8提升读IO并发9.innodb_write_io_threads 8# 原4提升写IO并发10.innodb_max_dirty_pages_pct 75# 原90降低脏页比例减少刷盘卡顿11.join_buffer_size 1024K# (性能调整里面设置)缩小避免每个连接占用过多内存12.long_query_time2# 原3秒缩短到2秒更早发现慢查询13.innodb_buffer_pool_size 4096M14.innodb_flush_log_at_trx_commit 2#性能优先每秒刷盘兼顾安全性15.skip-name-resolve #强烈建议您取消这一项的注释去掉最前面的#16.max_connections 500 #从300 增加到500最大并发连接数17.table_open_cache 4096 # 原384太小 Discuz! 有大量表 频繁打开 / 关闭表性能下降18.key_buffer_size 64M # 原384太大19.log_queries_not_using_indexesoff #或者加#注释#log_queries_not_using_indexesoff20.binlog_expire_logs_seconds 2592002592003 天数据库 二进制日志21.thread_cache_size 642 核 / 4 核机器30~64足够redis优化1.将maxmemory设置为物理内存的10%-15%redis --- 性能调整 ---maxmemory设置15362.头部第2行下面直接插入一下代码maxmemory-policy allkeys-lru maxmemory-samples 10 内存管理核心 maxmemory1610612736# 1.5GB与MySQL 4GB共存maxmemory-policyallkeys-lru# Discuz! 缓存专用所有键均可淘汰maxmemory-samples10# LRU采样精度提升淘汰准确性修改 添加好 如下图3.开启主动内存碎片整理redis配置文件里面搜索# a good idea to leave the defaults untouched.# a good idea to leave the defaults untouched.下面添加一下代码# 启用主动内存碎片整理 (关键优化) activedefrag yes active-defrag-ignore-bytes 100mb active-defrag-threshold-lower 20 active-defrag-threshold-upper 100 active-defrag-cycle-min 5 active-defrag-cycle-max 25修改 添加好 如下图这样配置后Redis 将启用主动内存碎片整理设置阈值下限为20%上限为100%CPU使用率在5%-25%之间4. 惰性删除避免阻塞lazyfree-lazy-eviction yes #原no淘汰时异步释放内存lazyfree-lazy-expire yes #原no过期键异步删除lazyfree-lazy-server-del yes #原no内部删除命令异步化replica-lazy-flush no #原no复制全量同步保持阻塞更安全直接复制下面的代码 替换lazyfree-lazy-eviction yes lazyfree-lazy-expire yes lazyfree-lazy-server-del yes replica-lazy-flush yes注意上面的 第1 -- 4 步 必须 重启Redis服务 才能使配置生效5.首先在宝塔面板中安装redis修改config/config_global.php文件内容如下方法一只需要修改下面2个地方$_config[memory][redis][server] 127.0.0.1;$_config[memory][redis][requirepass] redis密码;宝塔redis性能调整redis加密码 比较安全 需要两个号地方设置一样的密码1.redis—–性能调整—–requirepass6.PHP8.0—–Session配置—–requirepass方法二上面不行 再用下面这个$_config[memory][prefix] 3DAD6r_; $_config[memory][redis][server] 127.0.0.1; $_config[memory][redis][port] 6379; $_config[memory][redis][pconnect] 1; $_config[memory][redis][timeout] ; $_config[memory][redis][requirepass] redis密码;宝塔redis性能调整requirepass设置的这个密码 $_config[memory][redis][serializer] 1;保存完成后重启php和Nginx内存接口的主要设置位于/config/config_global.php 当中您可以通过编辑 config_global.php 进行高级设置详细参考 discuz config_global.php文件设置说明PHP 优化一、php.ini 核心优化立即修改配置项当前值优化后值理由memory_limit128M512MDiscuz! 某些插件/后台操作可能超过128M1024M更稳健且总内存可控。post_max_size50M64M与上传大小匹配预留余量。upload_max_filesize50M64M同上。max_input_vars未设置默认10003000Discuz! 某些复杂表单如权限设置可能超过1000设为3000安全。session.cookie_httponly空1禁止 JavaScript 访问会话 Cookie防 XSS 窃取。session.cookie_samesite空Lax缓解 CSRF 攻击现代浏览器支持。cgi.fix_pathinfo10在 Nginx PHP-FPM 环境下设为 0 可避免潜在的文件解析漏洞推荐。error_reportingE_ALL ~E_NOTICEE_ALL ~E_DEPRECATED ~E_STRICT生产环境忽略废弃与严格标准提示减少日志量。display_errorsOffOff保留生产环境必须关闭。log_errorsOnOn保留开启错误日志便于排查问题。date.timezonePRCAsia/Shanghai更标准的时区写法功能相同。disable_functions已有列表追加proc_closeproc_get_statusproc_niceproc_terminate进一步限制危险的进程操作函数。expose_phpOffOff保留隐藏 PHP 版本。max_execution_tim 30PHP-FPM优化也是在 PHP里面设置 PHP有个FPM配置文件参数原值优化后理由pm.max_children3060最大子进程数按服务器内存计算1核2G202核4G404核8G608核16G80pm.max_spare_servers3030空闲进程数不宜过多30 足够应对突发。pm.max_requests未设1000在pm.max_spare_servers下面新增pm.max_requests 2000新增每个子进程处理1000个请求后重启防内存泄漏request_terminate_timeout600300600 秒10 分钟过长慢请求堆积会耗尽进程。Discuz! 正常请求应在 1~2 秒内完成120 秒已是极大宽容。request_slowlog_timeout3010合理Discuz! 复杂操作如数据统计可能慢30 秒合适slowlogvar/log/slow.log/www/wwwlogs/php-slow.log建议使用绝对路径统一日志目录便于管理。php_admin_value安全指令无增加强制覆盖 php.ini 中可能被绕过的设置增强安全性与一致性。opcache.jit1205