LiteSpeed调整最大连接数及外部应用后,Nextjs仍API超时求助
问题场景
独立服务器部署架构:
- Next.js 前端(运行在8080端口)
- PHP 后端(服务器端API)
用户量低于200时一切正常,达到200后,Next.js调用PHP API出现超时,但PHP API本身运行状态良好。通过LiteSpeed监控确认当前最大连接数被限制为200,已尝试以下操作但问题未解决:
- 修改Home>Tuning>"Max Connections"为500
- 在“External Applications”中添加web-server
排查与解决方案
1. 检查LiteSpeed深层连接数限制
仅修改全局Max Connections不足以解决问题,需同步调整以下关键配置:
- Per-Process Connections:在Home>Tuning中,将
Per Process Soft/Hard Connections同步调高(建议设为200-250,适配500全局连接数),避免单进程连接瓶颈 - Connection Queue Size:调大该值(建议设为1000),防止连接数接近上限时因队列不足导致超时
2. 确认PHP外部应用的连接数配置
检查PHP对应的External Application设置,排除自身连接数限制:
- 若使用LSAPI运行PHP,将对应应用的
Max Connections调高至300-400,避免PHP进程池连接耗尽 - 调整
Idle Timeout(建议60s)和Connection Timeout(建议30s),确保闲置连接及时回收
3. 优化Next.js的连接复用策略
Next.js若未开启连接复用,会创建大量短连接快速耗尽LiteSpeed连接数:
- 使用
node-fetch时开启keep-alive:import fetch from 'node-fetch'; const agent = new fetch.Agent({ keepAlive: true }); const response = await fetch('http://localhost/path/to/api', { agent }); - 使用Axios时配置全局实例开启keep-alive:
import axios from 'axios'; import https from 'https'; const axiosInstance = axios.create({ httpsAgent: new https.Agent({ keepAlive: true }) });
4. 调整服务器系统级连接参数
LiteSpeed连接数受内核参数限制,需修改以下配置:
- 调高
somaxconn(默认128,建议1024以上):sysctl -w net.core.somaxconn=1024 echo "net.core.somaxconn=1024" >> /etc/sysctl.conf - 调整TCP连接队列长度:
sysctl -w net.ipv4.tcp_max_syn_backlog=2048 echo "net.ipv4.tcp_max_syn_backlog=2048" >> /etc/sysctl.conf - 执行
sysctl -p使配置生效
5. 重启LiteSpeed并验证
修改所有配置后,重启LiteSpeed服务:
/usr/local/lsws/bin/lswsctrl restart
通过LiteSpeed监控面板查看实时连接数,确认是否突破200限制。
内容的提问来源于stack exchange,提问作者ali shekari
相关产品推荐
相关产品推荐

