阿里云ECS服务器的连接数控制可以通过多个层面来实现,具体取决于你的应用场景和需求:
1. 系统级连接数限制
修改Linux系统参数
# 查看当前连接数限制
ulimit -n
# 临时修改(重启后失效)
ulimit -n 65535
# 永久修改 - 编辑配置文件
vi /etc/security/limits.conf
# 添加以下内容:
* soft nofile 65535
* hard nofile 65535
root soft nofile 65535
root hard nofile 65535
内核参数优化
# 编辑 sysctl.conf
vi /etc/sysctl.conf
# 添加或修改以下参数:
net.core.somaxconn = 65535
net.ipv4.ip_local_port_range = 1024 65535
net.ipv4.tcp_max_syn_backlog = 65535
net.ipv4.tcp_tw_reuse = 1
net.ipv4.tcp_fin_timeout = 30
# 使配置生效
sysctl -p
2. 应用层连接数控制
Nginx配置
# 控制每个IP的连接数
limit_conn_zone $binary_remote_addr zone=addr:10m;
limit_conn addr 100;
# 或者在server块中
server {
limit_conn addr 50;
limit_rate 100k; # 限制带宽
}
Apache配置
# httpd.conf中
ListenBacklog 1024
MaxRequestWorkers 150
ServerLimit 16
MySQL配置
# my.cnf中
max_connections = 1000
max_user_connections = 100
3. 阿里云安全组规则
在阿里云控制台设置:
- 入方向规则:限制特定端口的访问频率
- 出方向规则:控制服务器对外连接数
- 可以设置IP白名单/黑名单
4. 使用防火墙工具
iptables限制
# 限制单个IP的并发连接数
iptables -A INPUT -p tcp --dport 80 -m connlimit --connlimit-above 50 -j DROP
# 限制新连接速率
iptables -A INPUT -p tcp --dport 80 -m limit --limit 50/minute --limit-burst 100 -j ACCEPT
使用fail2ban
# 安装fail2ban
yum install fail2ban
# 配置监控规则,自动封禁异常IP
5. 监控和诊断
实时监控连接数
# 查看当前连接状态
netstat -an | grep :80 | wc -l
ss -s # 查看socket统计
# 按IP统计连接数
netstat -an | grep :80 | awk '{print $5}' | cut -d: -f1 | sort | uniq -c | sort -nr
# 使用iftop监控流量
iftop -i eth0
6. 最佳实践建议
- 根据业务需求设置合理值:不要盲目调高,要考虑服务器资源
- 分层控制:系统层 + 应用层 + 网络层多重防护
- 定期监控:设置告警阈值,及时发现异常
- DDoS防护:对于公网服务,建议开启阿里云DDoS基础防护
- 负载均衡:高并发场景建议使用SLB分发流量
7. 常见问题排查
# 检查是否达到系统限制
dmesg | grep -i "file limit"
cat /proc/sys/fs/file-nr
# 查看进程打开文件数
lsof -p <进程ID> | wc -l
通过以上方法,你可以有效控制ECS服务器的连接数,既能保证正常业务运行,又能防止资源耗尽和DDoS攻击。建议根据实际业务场景选择合适的控制策略。
CDNK博客