我的团队继承了对服务代码的维护和维护,该服务运行三个 python 脚本并创建在将数据从我们的产品发送到另一个产品的过程中发挥作用的进程。一个进程将我们的产品生成的文件从一种类型转换为另一种类型,另一个进程将 X 个文件进行压缩,第三个进程将它们通过 SFTP 传输到另一台计算机。我们的产品和继承的服务都运行在 CentOS 7 上。
自从我们实施该产品以来,我们注意到一些性能下降。我的任务是尝试降低服务的发生率,并确保它仅在 CPU 消耗较低时运行,以便在高峰活动期间我们的主要产品将拥有所需的所有资源。我尝试使用该服务的 .service 文件,在“[Service]”下添加以下参数,并运行性能测试自动化以尝试查看每个步骤后的效果:
- 尼斯=19
- Nice=19 + 将“chrt -p 0; Nice; ionice”添加到 ExecStart 的 bin 路径中
- 尼斯 = 19 + CPUSchedulingPolicy = 批处理
- 尼斯= 19 + CPUSchedulingPolicy =批处理 + IOSchedulingClass =尽力而为 + IOSchedulingPriority = 7
- 尼斯 = 19 + CPUSchedulingPolicy = 批 + IOSchedulingClass = 空闲 + IOSchedulingPriority = 7
- 尼斯 = 19 + CPUSchedulingPolicy = 空闲 + IOSchedulingClass = 空闲 + IOSchedulingPriority = 7
每次更改之后,在运行性能测试自动化之前,我都会运行systemctl daemon-reload
和systemctl restart <application>.service
。
我没有看到性能测试结果有任何重大变化 - 过去两个月的平均测试结果没有变化,也没有比较测试本身的结果。我觉得我没有完全正确配置。我缺少什么?
我编辑的服务的 .service 文件位于/etc/systemd/system/
并运行systemctl enable <application>.service
,然后systemctl list-unit-files
确保该文件在那里并标记为启用。