我建议不要让进程一直以100%的速度运行,这会导致系统崩溃。我通常将利用率控制在80%,以平衡利用率和突发进程。
过去我采用的方法是逐步增加池大小并测量其影响(包括CPU和其他限制,如IO),您永远不知道,也许突然之间IO成为瓶颈。
假设除了操作系统之外,机器上没有其他重要的内容:
如果你的负载是恒定的,你应该以100%的CPU利用率为目标,其他一切都是浪费CPU。请记住,操作系统处理线程,因此它确实能够运行,在行为良好的程序中很难使操作系统饿死。
但是,如果你的负载是变量的,并且你预计会有高峰期,那么你应该考虑使用80%的CPU作为一个好的阈值,除非你确切地知道负载将如何变化以及需要多少CPU,那么你可以瞄准精确的数字。
如果您只是给您的线程一个较低的优先级,操作系统会自动处理并按需获取 CPU 时间。 Server 2003(以及大多数服务器操作系统)非常擅长此项工作,因此无需尝试自行管理。
我通常将CPU利用率的目标设为80%。正如其他人所提到的,这会留出一些余地以应对偶发性的活动高峰,并有助于避免CPU过载。
以下是Weblogic团队在这个问题上给出的一些(虽然有点老但仍然相关)建议:http://docs.oracle.com/cd/E13222_01/wls/docs92/perform/basics.html#wp1132942
如果你觉得负载非常均衡和可预测,你可以将目标设得更高一些,但除非你的用户群体对周期性的缓慢响应非常宽容,而且你的项目预算非常紧张,否则我建议增加系统资源(添加一个CPU,使用一个拥有更多核心的CPU等),而不是冒险尝试从现有平台中挤出另外10%的CPU利用率。