Articles of debugging

Nginx / Unicorn / Rails连接超时

我有一个与Nginx /独angular兽运行的Rails应用程序。 链接到我的nginx.conf和unicorn.rb 我正在通过capistrano进行部署,最初的应用程序运行良好。 然而,经过一段时间(即约10-20分钟)没有请求,则传入的请求将遇到问题。 (返回错误500页出错页面)。 Rails production.log显示它收到请求,但是我什么也没做: I, [2015-01-29T13:12:03.725959 #24176] INFO — : Started GET "/" for xxx.18.170.101 at 2015-01-29 13:12:03 +0000 nginx的access.log xxx.18.170.101 – – [29/Jan/2015:13:14:33 +0000] "GET / HTTP/1.1" 504 1477 "-" "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/40.0.2214.91 Safari/537.36" nginx'error.log 2015/01/29 13:14:33 [error] 23786#0: *20 upstream timed out (110: […]

在aws elastic beanstalk上部署节点js web应用 – 显示502个坏的网关nginx / 1.8.0

我已经把我的web应用程序的端口从3030改为8081(eb-default)。 但我仍然得到“502”坏网关错误。 这里是我的日志文件。 [2016-03-26T03:26:57.709Z] DEBUG [12162] : Reading config file: /etc/elasticbeanstalk/.aws-eb-stack.properties [2016-03-26T03:26:57.709Z] DEBUG [12162] : Checking if the command processor should execute… [2016-03-26T03:26:57.711Z] DEBUG [12162] : Checking whether the command is applicable to instance (i-525a308a).. [2016-03-26T03:26:57.711Z] INFO [12162] : Command is applicable to this instance (i-525a308a).. [2016-03-26T03:26:57.711Z] DEBUG [12162] : Checking if the received command […]

nginx php-fpm xdebug netbeans只能启动一个debugging会话

在过去,我使用apache + mod_php + xdebug + netbeans来开发我的网站(服务器是我的本地机器,运行Debian Squeeze),很高兴–xdebug正常工作,debugging会话可以随时启动和停止,当我需要它。 但是,当我转移到nginx + php_fpm + xdebug + netbeans我遇到了一些debugging问题。 我的debugging会话可能会很长 (超过30秒),似乎nginx不能等待这么久,它显示“504网关超时错误” 。 我已经尝试了很多build议来解决这个问题,但没有运气。 虽然对我来说不是很重要,因为debugging会话本身还在继续运行,这只是一点点不舒服的事情。 我的debugging会话只能运行一次,所以,如果我停止它,并尝试再次启动debugging,netbeans无法接受来自xdebug的连接(它写入“等待xdebug连接”,这是永远)。 netbeans重新启动后,debugging会话可以正常重新启动。 在来的情况下,我不明白,debugging是“打开所有的PHP脚本”,并阻止任何其他脚本运行。 例如,我在我的网站的http://mysite.local/index.php上启动debugging会话并使用它。 一段时间后,我注意到,我的adminer (放在intranet.local / adminer.php)没有运行,浏览器试图加载页面一段时间,并显示“504网关超时错误”。 如果我看到这种行为,我可以在netbeans中停止xdebugdebugging会话,并且所有其他脚本开始正常运行。 现在,当我写这个问题的时候,我做了一些调查,发现,如果我开始debugging会话几秒钟,然后停止它,然后重新开始 – 它正常启动。 似乎问题出现一段时间后积极debugging。 我的系统和应用程序:Debian squeeze:2.6.32-5-686 Nginx:1.4.1(来自dotdeb仓库)php5-fpm:5.3.26-1〜d(来自dotdeb仓库)php5-xdebug:5.3.26-1 〜d(来自dotdeb资源库)netbeans:7.3 我的configuration: nginx基本configuration: https : //gist.github.com/MihanEntalpo/6229801 nginx网站configuration文件: https : //gist.github.com/MihanEntalpo/6229781 fastcgi_params文件: https : //gist.github.com/MihanEntalpo/d93fd4105573e1eda56f php-fpm池configuration文件: https : //gist.github.com/MihanEntalpo/6229820 php-fpm […]

debugging加载问题

我在debugging一个非常奇怪的错误时遇到了麻烦。 这种情况很less发生,并且在页面上看似随机的地方。 HTML将停止,并再次加载页面 – 请参阅下面的截图: 如果我重新加载页面,然后99%的时间工作正常。 我们在nginx服务器上使用Magento,但问题也发生在我的本地开发框。 发生这种情况时,我可以看到没有错误(检查nginx,php-fpm,mysql和Magento日志)。 有没有人有任何想法如何我可以debugging这个问题?

如何在nginxconfiguration里面debugginglua代码?

我想在我的lua代码中插入日志点(io.write),它本身是nginxconfiguration(使用HttpLuaModule for nginx)。 怎么做? 访问和错误日​​志不显示它们。

nginx的。 testing哪个位置用于处理请求

我想知道如何知道某个特定位置是否用于在nginx处理请求。 例如: # 1 location / {} # 2 location ~ /[\w\-]+\.html {} # 3 location ~ /\w+\.html {} 我如何知道像/mysite这样的URI是由第三位而不是第二位处理的? 我倾向于使用add_header这个事情: location / { add_header location 1; } location ~ /(\w+\-)\.html { add_header location 2; } location @named { add_header location named; } 我想知道是否有更好的解决scheme,或者您个人用于debugging目的?

如何在syscall中停止时获得正确的orig_eax值?

我使用ptrace(PTRACE_ATTACH …)连接进程,而在系统调用(如nanosleep())中。 我可以使用PTRACE_GETREGS获取寄存器内容,并且eip位于预期位置(在__kernel_vsyscall中)。 但是,eax和orig_eax寄存器有意想不到的内容:eax通常包含-516,而orig_eax通常为0。 这是我使用的testing程序(取自http://www.linuxjournal.com/article/6210 ,稍作修改): #include <stdlib.h> #include <stdio.h> #include <sys/ptrace.h> #include <sys/types.h> #include <sys/wait.h> #include <unistd.h> #include <sys/user.h> int main(int argc, char *argv[]) { pid_t traced_process; struct user_regs_struct regs; long ins; if(argc != 2) { printf("Usage: %s <pid to be traced>\n", argv[0]); exit(1); } traced_process = atoi(argv[1]); ptrace(PTRACE_ATTACH, traced_process, NULL, NULL); wait(NULL); ptrace(PTRACE_GETREGS, […]

实现一个内存debugging器

我用ptrace(2)编写了一个debugging器,主要用于审计系统调用和redirectsubprocess的标准IO。 我也想用这个debugging器来检测内存泄漏。 我认为这可能与对系统调用brk(2)引用计数一样简单,但事实并非如此。 不幸的是(或者幸运的是),无论内存是否被正确释放,Linux似乎都会在程序结束时调用brk(2) 。 我在一个调用malloc(3)和free(3)的程序以及一个调用malloc(3)的程序中看到了这一点 – 在程序调用exit_group(2)时,它们都具有相同的brk(2)调用计数exit_group(2) ,这是返回发生(也许我可以解释这些结果不正确?)。 或者,也许exit_group(2)不等同于从主返回,我应该设置一个不同的断点来审计brk(2)的调用计数。 我在这里发现了一个类似的问题,但我还没有find答案。 据我所知,Valgrind是一个完美的工具,但会造成相当大的开销。 有没有人有有用的信息检测内存泄漏与ptrace(2) ? 用ptrace(2)可能吗? 有没有更实用的方法? 是否有内存debuggingsubprocess的API? 编辑: 如果有分配内存的其他function,我也会把它们计算在内。 在malloc的页面上,它表示mmap(2)也用于内存分配。 所以,我也会数这个。

debuggingLinux上的C / C ++运行时库并查看库代码?

在Visual Studio 2012中编写C ++时,我可以介绍一些像malloc()等函数的实际Microsoft实现。 在Linux上使用什么是最好的(debugging器?),我可以介入像malloc()这样的函数的Linux / GCC实现吗? 这样做相对简单吗? 在Linux上编写C ++时,我想了解Linux下的“底层”实际情况。

如何在创build新线程时阻止程序执行? (与GDB)

EX:线程A创build线程B.我想阻塞线程A,当它开始创build线程B,但我不知道如何使用GDB。 任何帮助将不胜感激!谢谢