我在 aix 5.3 上使用 inetd 设置了一个 tcp 服务器。
问题是服务器的响应速度非常慢。但如果我有一个独立的守护进程服务器,它就会非常快。但我的要求是我必须使用 inetd。
那么,有没有什么方法可以提高 inetd 的性能?
谢谢
答案1
通过 inetd 运行时的一个问题是,它会降低性能。如果性能是一个问题(确实如此),请不要使用 inetd,而应使用独立守护进程。
答案2
提高性能的最佳方法是将 inetd 移除。但是,如果您真的必须使用 inetd,以下是一些建议:
- 将 inetd 的优先级调整为负数。
- 调低/关闭 inetd 日志记录
- 登录到更快的磁盘/阵列。
另一种可能性是,您的服务正在处理一个请求或少量请求,然后关闭。如果是这种情况,那么在负载下,inetd 将花费大量时间重新启动您的服务。所以您要避免这种情况。
最后一种可能性是,您看到的问题是由服务器进程未正确终止并占用内核资源而引起的。在最坏的情况下,它们甚至可能在旋转。当您的系统运行缓慢时,使用系统的监控工具来查看实际发生的情况是值得的。
答案3
您能告诉我们“非常非常慢”和“非常快”之间的区别吗?可能是 inetd 在每个连接上执行了类似反向查找 IP 地址的操作(我不确定,这只是猜测),也许您没有设置 DNS 服务器来应答,因此每个连接都会有 1 或 2 分钟的超时时间。
如果差异是“每秒 10 次”与“每秒 12 次”,那么您遇到的问题与差异是“需要 90 秒才能响应”与“立即响应”时遇到的问题不同。
答案4
听起来好像您的 TCP 服务正在为每个传入 inetd 的请求启动,然后立即关闭。
为每个请求分叉这样的新进程非常慢,所以我认为最好的办法是改变你的 TCP 服务,使其保持活动状态,以便在关闭之前处理 x 个请求。