CherryPy性能调优:如何降低初代单核树莓派空闲时的CPU占用率
解决初代单核树莓派上CherryPy空闲高CPU占用问题
我之前在初代单核树莓派上跑CherryPy也碰到过这个问题,空闲时CPU占比15-20%确实很头疼,折腾了好一阵才找到几个关键的优化点,你可以试试这些配置调整:
关闭自动重载器:从你的启动日志能看到CherryPy默认开启了自动重载线程,它会持续监控文件变化,这是空闲时CPU占用的主要元凶之一。在配置里关掉它:
cherrypy.config.update({'engine.autoreload.on': False})缩减线程池大小:初代单核树莓派根本不需要默认的多线程配置(默认线程池大小通常是10),多线程反而会增加上下文切换的开销。把线程数降到1或者2:
cherrypy.config.update({'server.thread_pool': 1})禁用不必要的日志输出:屏幕日志的IO操作也会占用额外CPU,如果你不需要实时看日志,可以关掉屏幕输出,或者把日志写到文件:
cherrypy.config.update({ 'log.screen': False, 'log.error_file': '/var/log/cherrypy.log', 'log.access_file': '/var/log/cherrypy_access.log' })切换到更高效的服务器适配器:CherryPy默认的服务器可以换成官方推荐的
cheroot服务器,它的资源占用更低。先确保安装了cheroot(pip install cheroot),然后配置:cherrypy.config.update({ 'server.class': 'cheroot.server.Server', 'server.socket_timeout': 60, # 调整socket超时,减少频繁检查 'server.accept_queue_size': 2 # 适配单核的小队列 })
把这些配置整合起来,完整的启动代码大概是这样:
import cherrypy class Root: pass if __name__ == '__main__': cherrypy.config.update({ 'engine.autoreload.on': False, 'server.thread_pool': 1, 'log.screen': False, 'server.class': 'cheroot.server.Server', 'server.socket_timeout': 60, 'server.accept_queue_size': 2 }) cherrypy.quickstart(Root())
调整完之后再用top命令查看,空闲时的CPU占用应该会降到1%左右,完全符合低功耗设备的需求。
内容的提问来源于stack exchange,提问作者Blindfreddy
相关产品推荐
相关产品推荐

