
协程数量导致的端口扫描问题
问题描述:
在编写一个端口扫描器时,使用sync.waitgroup限制协程数量,但在设置协程数量过高时,扫描出的端口数量与预期不符。
解决方法:
Linux系统管理专家,覆盖12大模块:用户权限、SSH、存储、网络、systemd、防火墙、日志监控、备份恢复、TLS证书、Ansible、容器、IaC。提供配置、验证、加固、监控、备份、自动化、故障排查、回滚闭环。关键词:useradd、sudo、sshd_config、chmod、SEL...
这个问题并不是 go 代码本身的问题,而是 linux 系统的限制造成的。 linux 默认允许同时打开的文件数为 1024,这就会导致当创建的协程数量超过该限制时,端口扫描会失败。
要解决这个问题,需要修改linux 的配置限制:
ulimit -SHn 10000
需要注意的是:
- 降低协程数量:不一定越多越好,需要根据实际情况调整。
- 修改 linux 配置:需要具有 root 权限,且修改后可能会影响其他程序。

















