我有一个自定义的日志记录过程,它从STDIN读取数据并通过TCP发送到一个抄写日志服务器。在我的例子中,STDIN是一个连接到Apachehttpd2.2的访问日志,在httpd.conf中是这样的:默认情况下是: CustomLog“AC.26/usr/local/bin/serelog”
我的serelog过程有时会在FreeBSD 9.0下进入不间断的睡眠状态,而不会从中返回。不过,它在其他操作系统下工作可靠,包括FreeBSD 8、Linux2.6和Linux3.1。
我怎样才能找到不间断睡眠的原因呢?
总体结构如下: httpd --管道--> serelog --TCP--连接-->已编写的
直到现在,我做了以下分析:
使用ps: stat的
因此,我现在被一个不可中断的进程困住了,它显然不在syscall中,并且在跟踪时工作可靠。唯一的好处是,当我通过JMeter负载测试(JMeter中的5个线程)发送大量HTTP请求时,我能够在几秒钟或几分钟内再现这种行为。
任何关于调试、内核参数调优的提示都会受到欢迎。
问候
发布于 2012-06-13 15:05:37
这个问题已经被证明是一个实际的FreeBSD内核错误,现在已经在内核中得到了修复。
链接到PR:http://www.freebsd.org/cgi/query-pr.cgi?pr=166340
拟议修补程序:http://lists.freebsd.org/pipermail/freebsd-bugs/2012-May/048610.html
https://stackoverflow.com/questions/9786501
复制相似问题