当前位置: 首页 > backend >正文

Limesurvay系统“48核心92GB服务器”优化方案

1、Redis

maxmemory 16GB              # 限制Redis内存(预留足够空间给其他服务)
maxmemory-policy volatile-lru # 自动淘汰旧会话(仅对带TTL的键)
save 300 100   # 仅保留一个条件减少阻塞
stop-writes-on-bgsave-error no # 快照失败仍允许写入

2、php.ini

(1)Redis连接优化

persistent=1#启用持久连接,减少TCP握手开销;
timeout=1.5#连接超时1.5秒(避免阻塞)
session.save_path = 
"tcp://127.0.0.1:6379?auth={pwd}&persistent=1&weight=1&timeout=1.5&read_timeout=10"

(2)session参数优化

session.gc_probability = 0       # 禁用PHP垃圾回收(依赖Redis自动过期)
session.gc_maxlifetime = 7200   # 会话有效期2小时(按业务需求调整)
session.cookie_lifetime = 0      # 浏览器会话级Cookie(关闭浏览器即失效)
session.use_strict_mode = 1  # 防止会话固定攻击
session.lazy_write = 1       # 仅当Session变化时写入(减少Redis操作)

(3)OPCache加速

opcache.enable=1
opcache.memory_consumption=1024
opcache.interned_strings_buffer=64
opcache.max_accelerated_files=100000
opcache.revalidate_freq=60
opcache.fast_shutdown=1
opcache.enable_cli=0
opcache.jit_buffer_size=256m
opcache.jit=1255

JIT兼容性条件说明:
1、确认PHP版本≥8.0(JIT在PHP7.4中实验性支持)
2、如遇段错误(segfault),降级为opcache.jit=off
开发环境差异:
1、开发时建议设置 opcache.revalidate_freq=0(实时检查文件更新)
2、生产环境设置为60秒以上减少I/O压力

3、PHP-FPM与Redis的协同优化

; /etc/php-fpm.d/www.conf
pm = dynamic
pm.max_children = 1000        # 提升至800进程(需测试内存)
pm.start_servers = 80
pm.min_spare_servers = 50
pm.max_spare_servers = 150
request_terminate_timeout = 30  # 保持严格超时(依赖Redis会话持久化)
pm.max_requests = 10000   #单进程最大请求数

自动优化PHPFPM脚本,服务器高峰出现问题时使用:

#!/bin/bash
#动态调整pm.max_children(根据内存剩余)
FREE_MEM=$(free -m | awk '/Mem:/ {print $7}')
CHILDREN=$(( FREE_MEM / 100 ))  # 假设每个进程100MB
sed -i "s/pm.max_children = .*/pm.max_children = $CHILDREN/" /etc/php-fpm.d/www.conf
systemctl reload php-fpm

4、Limesurvey

详见配置文件

http://www.xdnf.cn/news/7042.html

相关文章:

  • uniapp的适配方式
  • PDF批量合并拆分+加水印转换 编辑 加密 OCR 识别
  • 软件架构之-论软件系统架构评估以及应用
  • Zookeeper入门(三)
  • 《Vite 报错》ReferenceError: module is not defined in ES module scope
  • 影刀处理 Excel:智能工具带来的高效变革
  • 广域网学习
  • 数据结构与算法——栈和队列
  • Python字符串格式化(一):三种经典格式化方法
  • 从零开始实现大语言模型(十六):加载开源大语言模型参数
  • 《Python星球日记》 第87天:什么是大语言模型 LLM?
  • 1_Spring 【IOC容器的创建】
  • 深入了解linux系统—— 基础IO(下)
  • 【QGIS二次开发】地图编辑-08
  • tauri2项目使用sidcar嵌入可执行文件并使用命令行调用
  • 实战设计模式之状态模式
  • 互联网大厂Java面试场景:从Spring Boot到分布式缓存技术的探讨
  • 十一、STM32入门学习之FREERTOS移植
  • React 19 中的useRef得到了进一步加强。
  • ngx_http_proxy_protocol_vendor_module 模块
  • 【Linux】进程的基本概念
  • 虚幻引擎5-Unreal Engine笔记之Pawn与胶囊体的关系
  • 【android bluetooth 协议分析 01】【HCI 层介绍 5】【SetEventMask命令介绍】
  • Elasticsearch 初步认识
  • 用 UniApp 构建习惯打卡 App —— HabitLoop 开发记
  • 【cursor】有效解决
  • Denoising Score Matching with Langevin Dynamics
  • 【HarmonyOS 5开发入门】DevEco Studio安装配置完全指南
  • Flink 的窗口机制
  • 【ant design】ant-design-vue 4.0实现主题色切换