zopehealthwatcher允许您监视和调试zope应用程序的线程。

ZopeHealthWatcher的Python项目详细描述


zopehealthwatcher允许您监视zope应用程序的线程, 不管它是一个zeo客户端,还是一个普通的zope服务器。

对于服务器上运行的每个线程,您将知道它是活动的还是 空转。当它处于活动状态时,您将得到一个执行堆栈。

在线程被锁定的情况下进行调试也很有用:您将知道 问题所在的位置。

您可以通过浏览器或控制台脚本监视它。

zopehealthwatcher基于死锁调试器代码, 见http://plone.org/products/deadlockdebugger

安装

如果运行zc.buildout,请将ZopeHealthWatcher产品添加到 你的构建文件。

例如

[buildout]

parts =
    zhw

[zhw]
recipe = zc.recipe.egg

eggs = ZopeHealthWatcher
scripts = zope_health_watcher

您也可以使用pipeasy_install安装它。

配置

安装包后,打开位于 zopehealthwatcher并更改ACTIVATEDSECRET值,因此 工具已激活:

ACTIVATED = True
SECRET = 'MySuperPass'

用法

有两种查询工具的方法:使用zope_health_watcher脚本或 通过浏览器。

Zope_健康观察者

zope_health_watcher获取要运行的zope服务器的根url:

$ zope_health_watcher http://localhost:8080
Idle: 4 Busy: 1
OK - Everything looks fine

它将返回空闲和繁忙线程的数量。

如果您的服务器负载很高(例如4个繁忙的线程),该工具将 返回一些相关信息,如时间、系统负载(仅限Linux)。 内存信息(仅限Linux)和每个繁忙线程的当前 执行堆栈、查询、url和用户代理:

$ zope_health_watcher http://localhost:8080
Information:
        Time 2009-05-18T18:23:34.415319
        Sysload
        Meminfo

Dump:
Thread -1339518976
QUERY: GET /test?
URL: http://localhost:8080/test
HTTP_USER_AGENT: Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10.5; en-US; rv:1.9.0.10) Gecko/2009042315 Firefox/3.0.10
File "/Volumes/MacDev/bitbucket.org/zopewatcher/parts/zope2/lib/python/ZServer/PubCore/ZServerPublisher.py", line 25, in __init__
    response=b)
    ...
    roles = getRoles(container, name, value, _noroles)

Thread -1340051456
QUERY: GET /test?
URL: http://localhost:8080/test
HTTP_USER_AGENT: Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10.5; en-US; rv:1.9.0.10) Gecko/2009042315 Firefox/3.0.10
File "/Volumes/MacDev/bitbucket.org/zopewatcher/parts/zope2/lib/python/ZServer/PubCore/ZServerPublisher.py", line 25, in __init__
    response=b)
    ...
    roles = getRoles(container, name, value, _noroles)

Thread -1341648896
not busy

Thread -1341116416
QUERY: GET /test?
URL: http://localhost:8080/test
HTTP_USER_AGENT: Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10.5; en-US; rv:1.9.0.10) Gecko/2009042315 Firefox/3.0.10
File "/Volumes/MacDev/bitbucket.org/zopewatcher/parts/zope2/lib/python/ZServer/PubCore/ZServerPublisher.py", line 25, in __init__
    response=b)
    ...
    roles = getRoles(container, name, value, _noroles)

Thread -1340583936
QUERY: GET /test?
URL: http://localhost:8080/test
HTTP_USER_AGENT: Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10.5; en-US; rv:1.9.0.10) Gecko/2009042315 Firefox/3.0.10
File "/Volumes/MacDev/bitbucket.org/zopewatcher/parts/zope2/lib/python/ZServer/PubCore/ZServerPublisher.py", line 25, in __init__
    response=b)
    ...
    roles = getRoles(container, name, value, _noroles)

Idle: 1 Busy: 4
WARNING - Warning, high load

如果服务器关闭或无法访问,脚本将返回失败:

$ bin/zope_health_watcher http://localhost:8080
Idle: 0 Busy: 0
FAILURE - [Errno socket error] (61, 'Connection refused')
<> > ZopeWAVECHER 也在返回正确的退出代码,所以它可以 供Nagios等第三方程序使用:

  • 确定=0
  • 警告=1
  • 故障=2
  • 临界值=3

网络访问

使用url,可以通过web访问html版本 http://host:port/manage-zhw?秘密。此URL必须根据 在custom.py中输入的值。

请注意,此url不受密码保护。

http://bitbucket.org/tarek/zopewatcher/raw/ca8cb8e237eb/ZHW.png

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java错误:无法解析方法   如何用相同的父标记和子标记在Java中解析XML?   日期使用Java中的时区偏移将本地时间转换为UTC   java如何在多进程、多线程环境中读取文件   WebView中的java弹出式对话框不在当前显示范围内,但在chrome浏览器中运行良好   只有2个参数的java递归二进制搜索方法   无法在java中调用函数   java JavaMail在Tomcat服务器上运行时停止工作   反射通过java程序生成、编译和运行java类   java Android:如何使ListView即使在应用程序关闭后仍保持禁用状态   在JAVA中识别匿名类实例   java渲染一个由三角形组成的立方体,在旋转时会产生奇怪的角度   函数式编程如何基于比较连续的列表元素将Java流减少为布尔值   java如何替换列表中的多个项目?   java Android如何获取随机sqlite数据?   java我已经将useSSL设置为false,但仍然收到警告   java使用动态变量生成jlabel   apachespark:java。lang.NoClassDefFoundError v2TableWithV1回退