转储长时间运行的zope2请求的顺序堆栈跟踪
Products.LongRequestLogger的Python项目详细描述
简介
此产品将zope2实例的长时间运行请求的堆栈跟踪转储到 日志文件。如果一个请求占用的时间超过了配置的超时时间,那么它就是堆栈跟踪 将定期转储到日志文件中。
它是由莱昂纳多·罗谢尔·阿尔梅达创作的,并使开发人员能够 由Nexedi慷慨捐赠的时间,以及设计 Sébastien Robin和Julien的意见混乱不堪。
警告
products.longrequestlogger不工作,如果 sauna.reload已启用。
安装
buildout安装
在零件的鸡蛋列表中添加“products.longrequestlogger”
它定义了你的zope实例。
配置
添加(或更改)您的 zope.conf设置为如下:
<product-config LongRequestLogger> logfile $INSTANCE/log/longrequest.log0.log timeout 4 interval 2 </product-config>
可以识别以下变量:
- “logfile”: This is a mandatory variable. Its absence means the LongRequestLogger monkey-patch to the publication machinery will not be applied. It should point to a file where you want the long requests to be logged.
- “timeout”: The amount of seconds after which long requests start being logged. Accepts floating point values and defaults to 2.
- “interval”: The frequency at which long requests will have their stack trace logged once they have exceeded their ‘timeout’ above. Defaults to 1 and accepts floating point values.
解释结果
重要的是要记住一些关于 Zope2应用程序和线程,同时查看结果:
- Each thread only handles one request at a time.
- Slow requests will usually have tracebacks with a common top part and a variable bottom part. The key to the cause of the slowdown in a request will be in the limit of both.
如果你手头拮据,不想把文件分析成排名最慢的 用于调查的URL,以秒为单位选取一个时间,该时间是 时间间隔加上超时和grep。对于默认设置,为 超时和间隔,您将找到4秒、6秒和8秒的日志项, 所以你可以做一个像这样的grep:
$ grep -n "Running for 8" longrequest.log
并决定与网址显示更多。然后您可以打开日志文件,转到 报告的行号,并通过向上和向下搜索来导航回溯 相同线程ID的文件(报告的 行)。然后分析单个请求的回溯之间的差异 了解此特定请求正在执行的操作以及为什么它正在减速 向下。
通过对许多类似的请求执行此操作,您将能够提出 优化或缓存策略。
更改日志
2.1.0(2017-09-11)
- 记录转储请求时引发的异常。不可打印 请求导致监视器线程死亡,导致eppe错误 在zpublisher包装中。
- 如果没有改变,不要重复请求信息、回溯或sql查询。
2.0.0(2015-11-04)
- 配置现在通过zope.conf中的“product config”部分完成, 而不是环境变量。
- zmysqlda执行的日志查询。
- 如果堆栈跟踪输出与 上一个堆栈跟踪。
- 删除用于在运行时更改行为的看似未使用的机制 更改环境变量,例如将日志重定向到不同的 文件名,停止日志记录或更改超时。原木旋转蒸馏器 正常工作。
- 停止为每个请求创建和结束一个额外线程。相反,一个 监视线程在启动时启动。
- 放弃与python<;2.6的兼容性。
1.1.0(2012-09-10)
- 一些代码可读性的重构。
- 使用os.pipe()对和select.select()而不是 threading.condition以指示监视器何时应停止跟踪 原来的线。这在某些方面避免了性能瓶颈 安装了vmware,但似乎没有很好的锁定性能 在某些情况下。
- 将日志机制与zope和zconfig的信号处理集成起来 旋转文件处理程序,以便usr2信号将导致长请求日志 以类似于访问和事件日志的方式重新打开。
1.0.0(2010-10-28)
- 初始版本