当在浏览器中使用PHP mail()函数时,我的服务器出现问题,所以通过Apache。 当通过浏览器调用脚本(称为mailtest.php ,实际发送消息的时间有60秒。 当我php mailtest.php调用php mailtest.php ,邮件立即发送,没有任何延迟。 Apache重新启动后,延迟消失了。 但是,它在几个小时后返回。 我做了一个Strace,在这里你可以看到最后30秒的延迟。 13076 09:38:02 clone( <unfinished …> 13076 09:38:32 <… clone resumed> child_stack=0, flags=CLONE_CHILD_CLEARTID|CLONE_CHILD_SETTID|SIGCHLD, child_tidptr=0xa5f346f8) = 13160 http://pastebin.com/q34peBW7 这是一个运行Debian的虚拟服务器。 有任何想法吗? 我越来越绝望了
运行ltrace不是微不足道的。 这个RHEL 5.3系统基于一个Tomcat Catalina(servlet容器),它使用文本脚本将所有内容绑定在一起。 当我试图在这里find一个可执行文件的时候,我就下了个兔子洞: /etc/init.d/pki-ca9调用dtomcat5-pki-ca9 #Path to the tomcat launch script (direct don't use wrapper) TOMCAT_SCRIPT=/usr/bin/dtomcat5-pki-ca9 / usr / bin / dtomcat5-pki-ca9调用一个看门狗程序 /usr/bin/nuxwdog -f $FNAME 我用一个包装器取代了nuxwdog [root@qantas]# cat /usr/bin/nuxwdog #!/bin/bash ltrace -e open -o /tmp/ltrace.$(date +%s) /usr/bin/nuxwdog.bak $@ [root@qantas]# service pki-ca9 start Starting pki-ca9: [ OK ] [root@qantas]# cat /tmp/ltrace.1295036985 +++ exited (status 1) […]
如果我从他的本地局域网(192.168.100.0/24)访问他,我有一个MySQL服务器运行得很好。 如果我尝试从另一个LAN(在这种情况下为192.168.113.0/24)访问hin,则在传递结果之前会挂起很长时间。 SHOW PROCESSLIST; 在Sleep显示此过程, State空。 如果我strace -p这个过程,我得到以下输出(23512是相应的mysqld进程的PID): Process 23512 attached – interrupt to quit restart_syscall(<… resuming interrupted call …>) = 1 fcntl(10, F_GETFL) = 0x2 (flags O_RDWR) fcntl(10, F_SETFL, O_RDWR|O_NONBLOCK) = 0 accept(10, {sa_family=AF_INET, sin_port=htons(51696), sin_addr=inet_addr("192.168.113.4")}, [16]) = 33 fcntl(10, F_SETFL, O_RDWR) = 0 rt_sigaction(SIGCHLD, {SIG_DFL, [CHLD], SA_RESTORER|SA_RESTART, 0x7f9ce7ca34f0}, {SIG_DFL, [CHLD], SA_RESTORER|SA_RESTART, 0x7f9ce7ca34f0}, ) […]
我一直在Ruby on Rails应用程序上遇到了非常高的CPU(请参阅下面的堆栈),并试图诊断可能的原因无济于事。 堆栈: ruby1.9.3 导轨3.2.6 Apache / 2.2.21(Debian) Phusion Passenger 3.0.11 每当我对spiking Rack进程PID运行strace ( 见下面的顶部摘录 ),我看到一吨stat("/etc/localtime")和clock_gettime(CLOCK_REALTIME)调用,不知道如何停止这些。 摘录自顶部showin运行PID: PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND 11674 www-user 20 0 313m 182m 5076 R 99 2.3 63:04.60 Rack: /var/www/my_rails_app/current 11634 www-user 20 0 411m 216m 5144 S 10 2.7 197:55.63 Rack: […]
我注意到Apache的一个非常奇怪的问题。 我有很多虚拟主机 – 大约是501。 第493号主机出现问题。首先493个主机按预期工作,但是一旦我添加第494号主机,PHP就停止与memcache通信,并且每次读写访问都会超时。 其实,我使用memcache作为后端会话存储,所以,PHP函数: session_start(); 在30秒后简单地超时。 如果我删除了494个虚拟主机中的随机虚拟主机,并重新启动apache,它将重新开始工作。 我已经确定ulimit非常高(65k),但它没有帮助。 我已经尝试彻底closuresulimits,但没有运气。 你们有什么想法还有什么我可以尝试? 我已经尝试了在连接到浏览器的httpd进程之后,等待30秒后再开始。 这是strace输出: select(1170, [1024 1169], [], NULL, {1, 0}) = 2 (in [1024 1169], left {0, 999998}) select(1170, [1024 1169], [], NULL, {1, 0}) = 2 (in [1024 1169], left {0, 999998}) select(1170, [1024 1169], [], NULL, {1, 0}) = 2 (in [1024 […]
我运行了一些CentOS服务器。 我最近偶尔做yum update但是在less数服务器上失败了。 在大多数情况下,我可以通过这样做前进: # yum clean all # rm -f /var/lib/rpm/__db* # rpm –rebuilddb # yum update 但是,在一台服务器上, yum clean命令挂起。 我试过跑步了: # yum -v –noplugins clean all 但我根本没有输出。 Yum只是挂起来,如果我放了它,不用任何cpu,就停下来几个小时。 干 # strace -f yum -v –noplugins clean all 产生了相当多的输出,但随后停止: … stat64("/var/lib/rpm/__db.003", {st_mode=S_IFREG|0644, st_size=450560, …}) = 0 open("/var/lib/rpm/__db.003", O_RDWR|O_LARGEFILE) = 4 fcntl64(4, F_SETFD, FD_CLOEXEC) = […]
我知道如何对特定的程序进行压缩以查看所有读取的文件。 我知道如何查看当前正在使用某个文件的进程。 但有没有办法logging所有文件打开。 我想要的东西像tail -f some/log/file而不是lsof -f /file/someone/might/open/soon ,每打开一个文件lsof -f /file/someone/might/open/soon打印出信息。 谢谢
大约一个星期前,我的cron守护进程拒绝运行。 我在OpenVZ虚拟机上使用Debian 6 x64。 运行诸如pgrep cron类的东西,显示守护进程没有运行。 我使用service cron start或/etc/init.d/cron start ,然后启动它,但在几分钟后(在进程再次终止之前的1-30分钟之间变化),它将从正在运行的进程列表中消失。 使用strace -f service cron start ,我可以看到进程因为某种原因被杀死了: nanosleep({60, 0}, <unfinished …> +++ killed by SIGKILL +++ 在/var/log/syslog , /var/log/messages , /var/log/messages /var/log/auth.log或/var/log/kern.log没有任何相关内容可以解释为什么进程正在死亡。 系统至less有800 MB空闲内存, cat /proc/loadavg返回0.22 0.13 0.04所以资源不应该成为问题。 用cron运行, free -m报告: total used free shared buffers cached Mem: 1024 211 812 0 0 0 -/+ […]
我有一个Ubuntu的Apache / PHP服务器运行PHP做appx 100点击/秒和在后台运行的PHP Cron。 无论stream量还是cron活动,我都会在某个Apache进程中偶尔遇到高CPU负载。 在我看来,它陷入某种循环或什么东西。 下面你会发现顶部和strace信息。 我怎样才能find不好的代码在哪里,是什么原因造成的? top – 14:45:24 up 3 days, 3:38, 1 user, load average: 5.10, 5.88, 5.85 Tasks: 163 total, 5 running, 158 sleeping, 0 stopped, 0 zombie Cpu(s): 47.8%us, 18.5%sy, 0.0%ni, 10.2%id, 0.0%wa, 0.0%hi, 1.8%si, 21.6%st Mem: 7885012k total, 3858484k used, 4026528k free, 177444k buffers Swap: 0k total, […]
即使通过unix套接字文件(CentOS 6.3)连接,我也遇到了连接/login到加载的mysql服务器的问题。 在这种情况下查询很快完成 – (0.00 sec) – 但login需要几秒钟的时间,在这种情况下: real 0m3.128s user 0m0.010s sys 0m0.011s mysqld正在运行skip-name-resolve和一个thread_cache_size这样在这个问题中就不会创build新的线程。 这是一个基于负载的问题 ,即服务器空闲时login非常快。 服务器在强大的硬件上每秒处理大约60个连接和300个查询,所以它没有得到充分利用。 这里是它的摊位的部分,用空行注明。 我假设在read(失速read(意味着它正在等待来自服务器的响应: $ time strace mysql -e 'select 1' […] read(3, "# /etc/services:\n# $Id: services"…, 4096) = 4096 read(3, "ervice\nfinger 79/tcp\nfi"…, 4096) = 4096 read(3, " 209/udp "…, 4096) = 4096 read(3, "a-cluster 694/tcp "…, 4096) = […]