因此,我们有一个 java-tomcat 设置正在运行。在将大型文件(例如 31mb pdf)上传到平台期间,我们 RHEL5.5 系统上的 Sophos savscand 服务器进程(两个进程 - 始终有 2 个进程在运行,这显然是标准进程)会使整个系统陷入瘫痪并消耗 700% 以上的 CPU 负载。
直到 savscand 进程被终止,系统才会处于 CPU 超速状态。
答案1
我知道这是一个老问题了,但就在上周,在 Rackspace 对运行 Centos 6.7 的服务器进行更新后,savscand 也出现了类似的问题。从另一台服务器下载 XML 文件到服务器时,尤其是在读取 XML 时,savscand 会使 CPU 激增。以前只需 30 分钟到 1 小时即可处理的某个特定日常更新现在需要 24 小时以上才能处理。经过一周的时间,所有数据都过时了几天,这些 XML 文件正在全天候处理。我无法并行导入,因为导入的顺序至关重要,所以我临时破解了一个肮脏的小屏幕守护程序来让事情顺利进行。我不确定在优先级降低的情况下扫描的效果如何,但它确实提高了导入 XML 文件的性能。可能有很多更干净、更安全的方法可以做到这一点,但在我们准备迁移到另一台服务器时,它对我来说一直很有效:
screen
while true; do pgrep -f "savscand" | xargs -I % ps h -o pid,pcpu -p %|grep -oP "[ ]*[0-9]+(?=[ ]+([4-9][0-9]|[1-9][0-9][0-9]).)"|xargs -r -I {} sh -c 'pgrep -f '"'savscand'"' | xargs -I % ps h -o pid,pcpu,ni -p %|grep {};renice +1 {};echo demoted {};date;'; sleep 20;done
如果您不熟悉屏幕,请按 Ctrl+A,然后按 D 分离并让其无限期地在后台运行。screen -r 将让您稍后返回以中断它。
答案2
如果没有更多信息,您将需要向 Sophos 提出支持请求。Red Hat 支持人员可能会指出一些可能的原因,但我的直觉是,在他们查看 SOSReport 后,他们会将问题归咎于 Sophos。根据您提供的信息,我的直觉是某个地方发生了竞争条件。