我使用 Python + Bottle作为网络服务器。
由于我将生产服务器用于许多其他网站,例如,我不希望 Python + Bottle 占用 70% 的 CPU。
如何限制 Python Bottle 网络服务器的 CPU 使用率?
我正在考虑使用resource.setrlimit,但这是一个好方法吗?
例如,我们应该使用哪种语法resource.setrlimit
将限制设置为 CPU 的 20%?
你应该问问自己资源优化是否真的有必要。如果您确定特定应用程序消耗的资源过多,则可以或应该转到第 2 步。
当您的应用程序消耗太多资源时,您应该做的第一件事是尝试识别其中的瓶颈并查看是否可以优化它们。Python 有各种可以帮助您的工具(代码分析器、PyPy 等)。如果在这方面您无能为力,请转到第 3 步。
如果您绝对必须限制进程资源,请记住:
操作系统有一个非常复杂的调度机制,尽最大努力确保每个正在运行的进程获得公平的 CPU 时间份额。即使在处理器过载的情况下,事情仍然会运行良好(直到某个时候)。
如果您故意限制其中一个进程的 CPU 时间,它可能会由于网络超时而响应缓慢或根本不响应。
我对这个问题的回答是 - 如果您认为服务器可能会饿死其他服务,请降低服务器的静态优先级,但是当处理器过载时,您的服务器可能会遭受饥饿。使用nice
实用程序将是我的选择,因为它不会乱扔你的代码。