我知道sudo lsof -t -i:{port}
会给出涉及该端口的 PID 列表,我可以通过 java by Runtime.getRuntime.exec()
command 运行此命令。但问题是我有数千个线程在运行,每个线程都以大约 10 秒的间隔执行此命令,这导致每秒仅此命令就总共执行了大约 100 次以上,这占用了大量的服务器资源和时间,并且平均负载急剧上升,导致程序停止和崩溃。
在这种情况下,有效的方法是什么?
答案1
无论如何,我还是解决了这个问题,我必须从大约所有 65500 个端口获取 PID,并将其保存在 hashmap 中,以便以后每隔 10 秒左右使用。我在 10 秒内完成了它2-2.1秒尽管30,000 个端口是积极的我使用“ps -aux”命令一次获取所有活动的 PID、PORT 元组,然后在解析后插入到哈希图中(运行时解析命令输出并同时插入到哈希图中)。