我在这里搜索了多个答案,但找不到与此场景相关的答案,但如果您认为您找到了,请指出我。
我在这里添加数字是为了便于我自己的理解。
我有一个 96 核裸机 Linux 服务器,具有 256 GB RAM,专门用于运行内部编写的基于事件的分布式异步网络服务,充当缓存服务器。该守护进程以 32 个工作线程运行。除了获取和缓存的主要任务之外,该服务器还在几个额外的单独线程中执行各种相关任务,例如轮询其他成员的运行状况检查、将指标写入 unix 套接字等。工作线程值是“ t 进一步增加,因为增加这个值会增加缓存锁争用。该服务器没有太多磁盘活动,因为尝试批量写入指标,如果 unix 套接字发生故障,它只会忽略它并释放内存。
该实例是 9 节点集群的一部分,该节点的统计信息代表该集群中的其余实例。
随着最近入站流量的激增,我发现进程的 CPU 使用率百分比大幅上升,但平均负载仍然小于 1。
请查看下面的统计数据。
:~$ nice top
top - 19:51:55 up 95 days, 7:27, 1 user, load average: 0.33, 0.28, 0.32
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
587486 cacher 20 0 107.4g 93.0g 76912 S 17.2 37.0 5038:13 cacher
有时会上%CPU
升到 80%,但即使如此,平均负载也相当低,并且不会超过 1.5,这种情况主要发生在存在缓存未命中并且缓存器必须从上游获取它时,因此它主要是一组网络活动。据我了解,该服务在运行时执行的计算量大的操作是,当它必须将要缓存的项目存储到适当的分布式存储桶中时,它必须计算要缓存的项目的哈希值。对此服务的任何参数都没有设置任何 systemd 限制,并且还对其进行了调整以禁用该进程的内核 oomkiller,尽管它远未接近上限。其绑定的 systemd 套接字已经过调整,可以容纳更多的 tx 和 rx 缓冲区。
- 为什么96核服务器上的平均负载小于1,而
%CPU
使用32线程的服务的负载一直在20%到80%之间波动? - 在 96 核服务器上,多少被认为是
%CPU
安全运行的安全值?它与使用多少个线程有关系吗?如果线程数增加,理论上是否可以接受更高的 CPU 使用率?
谢谢。