项目上使用了大量物联网设备ftp客户端向一台vsftpd服务器传输照片,昨天现场生产环境异常调取不到图片,排查后是vsftpd连接不上了,但已经连接的客户端依然能使用,但是传输速度变慢了。

问题:

使用客户端连接确实连不上报错

监控控制中心链接不到服务器_服务器

显示500 00PS: vsf sysutil bind是一个错误消息,可能是由于服务器无法绑定指定的地址和端口导致的。这可能是由于网络配置问题或服务器资源不足引起的。

500 00PS: priv_sock _get_intServer disconnected是一个错误消息,可能是由于服务器与客户端之间的连接断开导致的。这可能是由于网络故障或服务器故障引起的

排查:

因为是突然连接不上的排除了参数或者配置有问题,只能想到资源不足

看了一下配置文件:

监控控制中心链接不到服务器_日志记录_02

使用了被动模式,并且给了200的连接数量端口,项目上仅仅百十台设备第一想法应该不会是超过最大连接数的问题。然后找到ftp日志发现日志级别不够。。。没法看,需要项目上用的一定要做好日志级别设置:

修改配置文件中的log_ftp_protocol

0 - 完全禁用日志记录:将禁用所有的日志记录功能,不会生成任何日志文件。

1 - 最小日志记录:只记录关键错误和警告信息,适用于对日志记录要求较低的环境。

2 - 中等日志记录:除了关键错误和警告信息外,还记录一些重要的操作和事件,适用于一般的生产环境。

3 - 详细日志记录:记录大部分操作和事件,包括用户登录、文件传输等详细信息,适用于需要详细追踪的环境。

4 - 调试级别:最详细的日志记录级别,记录所有操作和事件,包括调试信息和网络数据包,适用于故障排查和调试

看了半天是长时间的运行发现有很多僵尸链接在占用

因为事态严重没有收集信息直接restart了后就能用了。

处理

为什么会有僵尸链接呢

  1. 客户端异常关闭:当客户端异常关闭时,服务器可能无法及时检测到连接已关闭,导致连接保持在僵尸状态。
  2. 网络异常:网络中断、丢包等问题也可能导致连接异常关闭,但服务器未能及时检测到。

解决方法

  1. 更新软件版本:确保使用的vsftpd版本是最新的,以获得更好的稳定性和性能。
  2. 调整超时设置:在vsftpd的配置文件中,可以设置连接超时时间,当连接超过一定时间没有活动时自动关闭连接,避免出现僵尸链接。
  3. 监控和管理连接:使用系统工具或第三方工具监控服务器上的连接状态,及时发现并关闭僵尸链接。

上面都是搜索的答案:

1:vsftpd3.5已经是最新啦

2:这个可以试试,例子:

idle_session_timeout=300 #这将使控制连接在5分钟内没有任何操作时自动断开

data_connection_timeout=600 #数据连接在10分钟内没有任何操作时自动断开

3:我使用了HertzBeat去监控服务器vsftpd的可用性但是出现并未报警,只在我restart等待时候报警了。

监控控制中心链接不到服务器_服务器_03

推荐还是做个计划任务定时重启vsftpd例子:

计划任务

crontab -e 创建一个任务文件

监控控制中心链接不到服务器_服务器_04

选择编辑器后,添加下面一行保存退出,代表每天凌晨2点重启vsftpd

0 2 * * * service vsftpd restart

crontab计划口诀: 5个*  加一串

5个*:时间设置部分,由五个字段组成,分别表示分钟、小时、日期、月份和星期几

加一串:时间设置后面加上要执行的命令或脚本