在开发过程中,我们经常会碰到段错误等异常,这时我们需要有相应的机制来进行调试,特别是服务提供在线上时,面对大量的日志信息,合理的调试处理机制对于开发来说是一件非常重要的事情,幸好Nginx本身提供了很好的调试机制,主要包括以下几个方面。

1、Core文件 默认情况下,编译Nginx是带上-g选项

这就意味着我们可以使用gdb进行调试,以跟踪具体的错误原因。

使用Nginx自身带有的两个配置选择就可以轻松配置,使它在Crash的时候产生Core文件。

worker_rlimit_core  50M;
working_directory /tmp/;

其中worker_rlimit_core表示单个worker子进程所使用的Core文件大小的最大值。

working_directory表示Core文件存放的目录,这里需要注意的一点是:该目录nginx必须具有写权限,属主最好为Nginx的进程所有者。

当Nginx接收到信号结束处理时,就会产生相应的Core文件,我们就可以使用gdb来跟踪查看具体的错误原因,如下: gdb /usr/local/nginx/sbin/nginx /tmp/core.xxx >>bt

2、调试模式 为了收集运行过程中的更多的信息

我们可以开启调试模式运行Nginx,这在线上环境上收集具体的信息非常有用,我们只需要更新Nginx的配置文件,并重新加载,所有调试都会记录在日志当中。

在编译Nginx时加上–with-debug选项,并在配置文件中可以进行相应的配置以查看调用日志。

如下,在error_log中带有debug选项,就会将相应的调试日志记录下来: error_log  /usr/local/nginx/logs/error.log  debug; http { server { error_log  /usr/local/nginx/logs/error.log  debug; …. 因为日志占用的空间非常大,为了更加便于收集日志,Nginx还提供了一个配置选项用来设置只记录特定连接的调试信息,这个配置选项为debug_connection。

比如我们只对来自192.168.1.1的连接进行调试信息的记录,配置如下: events { debug_connection   192.168.1.1; }

这时我们可以通过tail -f /usr/local/nginx/logs/error.log -n 100|grep debug来进行日志过滤,查看相应的具体调试信息。

3、单进程非守护模式

Nginx有两种进程模型可以选用,为单进程和多进程两种,默认情况下使用的是多进程模型,Nginx以守护进程的方式运行,但为了方便开发和调试,Nginx提供了单进程模型和非守护进程的方式,由两个配置选项来控制:

守护进程: daemon Syntax: daemon on | off Default: on

多进程模型配置: master_process Syntax: master_process on | off Default: on

深入理解Nginx之调试优化技巧的更多相关文章

  1. (转)网站速度优化技巧:Nginx设置js、css过期时间

    网站速度优化技巧:Nginx设置js.css过期时间 原文:http://www.webkaka.com/blog/archives/Nginx-set-the-expiration-time-for ...

  2. 轻量级HTTP服务器Nginx(Nginx性能优化技巧)

    轻量级HTTP服务器Nginx(Nginx性能优化技巧)   文章来源于南非蚂蚁   一.编译安装过程优化 1.减小Nginx编译后的文件大小在编译Nginx时,默认以debug模式进行,而在debu ...

  3. 【转】101个MySQL调试和优化技巧

    MySQL是一个功能强大的开源数据库.随着越来越多的数据库驱动的应用程序,人们一直在推动MySQL发展到它的极限.这里是101条调节和优化MySQL安装的技巧.一些技巧是针对特定的安装环境的,但这些思 ...

  4. 100+个MySQL调试和优化技巧

    MySQL是一个功能强大的开源数据库.随着越来越多的数据库驱动的应用程序,人们一直在推动MySQL发展到它的极限.这里是101条调节和优化MySQL安装的技巧.一些技巧是针对特定的安装环境的,但这些思 ...

  5. Nginx性能优化技巧(6)

    一.编译安装过程优化 1.减小Nginx编译后的文件大小 在编译Nginx时,默认以debug模式进行,而在debug模式下会插入很多跟踪和ASSERT之类的信息,编译完成后,一个Nginx要有好几兆 ...

  6. nginx性能优化技巧

    前几天买了本高俊峰的<高性能Linux服务器构建实战I>,网上都说运维必备手册,昨天看了目录加小50页感觉还是比较扩充视野的,很多东西在学校是不可能学到的,就是感觉有的地方讲的仍然不是很清 ...

  7. Linux实战教学笔记38:企业级Nginx Web服务优化实战(下)

    四,Nginx站点目录及文件URL访问控制 4.1 根据扩展名限制程序和文件访问 Web2.0时代,绝大多数网站都是以用户为中心多的,例如:bbs,blog,sns产品,这几个产品都有一个共同特点,就 ...

  8. Linux实战教学笔记37:企业级Nginx Web服务优化实战(上)

    一,Nginx基本安全优化 1.1 调整参数隐藏Nginx软件版本号信息 一般来说,软件的漏洞都和版本有关,这个很像汽车的缺陷,同一批次的要有问题就都有问题,别的批次可能就都是好的.因此,我们应尽量隐 ...

  9. JavaScript 如何工作:渲染引擎和性能优化技巧

    翻译自:How JavaScript works: the rendering engine and tips to optimize its performance 这是探索 JavaScript ...

随机推荐

  1. request的各种方法大全

    request.setAttribute("result", district);//放进作用域,可以用el表达式在页面展示.(名字,调用方法的结果) pageContext.re ...

  2. Gym 100917J---Judgement(01背包+bitset)

    题目链接 http://codeforces.com/gym/100917/problem/J Description standard input/outputStatements The jury ...

  3. GJM : Unity3D - UI - UI边缘流光特效小技巧 [转载]

    感谢您的阅读.喜欢的.有用的就请大哥大嫂们高抬贵手"推荐一下"吧!你的精神支持是博主强大的写作动力以及转载收藏动力.欢迎转载! 版权声明:本文原创发表于 [请点击连接前往] ,未经 ...

  4. Redis-分片

    分片(partitioning)就是将你的数据拆分到多个 Redis 实例的过程,这样每个实例将只包含所有键的子集.本文第一部分将向你介绍分片的概念,第二部分将向你展示 Redis 分片的可选方案. ...

  5. 3种不同的ContextMenu右键菜单演示

    简单使用的右键菜单,希望能帮助大家.下面是截图和实例代码 实例预览 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional/ ...

  6. 《Javascript高级程序设计》:创建对象

    工厂模式 function createPerson(name,age, job){ var o = new Object(); o.name = name; o.age = age; o.job = ...

  7. ABAP 锁机制

  8. AE常见接口之间的关系(较笼统)+arcgis常见概念

    常见的接口有如下关系 IworkspaceFactory-------------->IworkSpace------------------>IfeatureWorkSpace ---- ...

  9. Atitit.mybatis的测试  以及spring与mybatis在本项目中的集成配置说明

    Atitit.mybatis的测试  以及spring与mybatis在本项目中的集成配置说明 1.1. Mybatis invoke1 1.2. Spring的数据源配置2 1.3. Mybatis ...

  10. 内网渗透测试思路-FREEBUF

    (在拿到webshell的时候,想办法获取系统信息拿到系统权限) 一.通过常规web渗透,已经拿到webshell.那么接下来作重要的就是探测系统信息,提权,针对windows想办法开启远程桌面连接, ...