深入理解Nginx之调试优化技巧
在开发过程中,我们经常会碰到段错误等异常,这时我们需要有相应的机制来进行调试,特别是服务提供在线上时,面对大量的日志信息,合理的调试处理机制对于开发来说是一件非常重要的事情,幸好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之调试优化技巧的更多相关文章
- (转)网站速度优化技巧:Nginx设置js、css过期时间
网站速度优化技巧:Nginx设置js.css过期时间 原文:http://www.webkaka.com/blog/archives/Nginx-set-the-expiration-time-for ...
- 轻量级HTTP服务器Nginx(Nginx性能优化技巧)
轻量级HTTP服务器Nginx(Nginx性能优化技巧) 文章来源于南非蚂蚁 一.编译安装过程优化 1.减小Nginx编译后的文件大小在编译Nginx时,默认以debug模式进行,而在debu ...
- 【转】101个MySQL调试和优化技巧
MySQL是一个功能强大的开源数据库.随着越来越多的数据库驱动的应用程序,人们一直在推动MySQL发展到它的极限.这里是101条调节和优化MySQL安装的技巧.一些技巧是针对特定的安装环境的,但这些思 ...
- 100+个MySQL调试和优化技巧
MySQL是一个功能强大的开源数据库.随着越来越多的数据库驱动的应用程序,人们一直在推动MySQL发展到它的极限.这里是101条调节和优化MySQL安装的技巧.一些技巧是针对特定的安装环境的,但这些思 ...
- Nginx性能优化技巧(6)
一.编译安装过程优化 1.减小Nginx编译后的文件大小 在编译Nginx时,默认以debug模式进行,而在debug模式下会插入很多跟踪和ASSERT之类的信息,编译完成后,一个Nginx要有好几兆 ...
- nginx性能优化技巧
前几天买了本高俊峰的<高性能Linux服务器构建实战I>,网上都说运维必备手册,昨天看了目录加小50页感觉还是比较扩充视野的,很多东西在学校是不可能学到的,就是感觉有的地方讲的仍然不是很清 ...
- Linux实战教学笔记38:企业级Nginx Web服务优化实战(下)
四,Nginx站点目录及文件URL访问控制 4.1 根据扩展名限制程序和文件访问 Web2.0时代,绝大多数网站都是以用户为中心多的,例如:bbs,blog,sns产品,这几个产品都有一个共同特点,就 ...
- Linux实战教学笔记37:企业级Nginx Web服务优化实战(上)
一,Nginx基本安全优化 1.1 调整参数隐藏Nginx软件版本号信息 一般来说,软件的漏洞都和版本有关,这个很像汽车的缺陷,同一批次的要有问题就都有问题,别的批次可能就都是好的.因此,我们应尽量隐 ...
- JavaScript 如何工作:渲染引擎和性能优化技巧
翻译自:How JavaScript works: the rendering engine and tips to optimize its performance 这是探索 JavaScript ...
随机推荐
- hibernate简单注释(一)
*****************************hibernate.cfg.xml************************************ <?xml version= ...
- Firemonkey ListView 点击事件
Firemonkey ListView 的点击事件一直让人摸不着头绪(各平台触发规则不太相同),因为它提供了点击相关的事件就有如下: OnChange:改变项目触发. OnClick:点击触发. On ...
- 动易CMS之标签管理
一.如何添加一个标签 1.系统设置->模板标签管理->添加标签 2.输入标签名称,根据需要选择数据设置: sql语句则选择[系统数据库SQL查询] 3.添加参数 4.系统可以根据设置的条件 ...
- HTTP狀態碼
1xx消息 这一类型的状态码,代表请求已被接受,需要继续处理.这类响应是临时响应,只包含状态行和某些可选的响应头信息,并以空行结束.由于HTTP/1.0协议中没有定义任何1xx状态码,所以除非在某些试 ...
- Oracle 免费的数据库--Database 快捷版 11g 安装使用与"SOD框架"对Oracle的CodeFirst支持
一.Oracle XE 数据库与连接工具安装使用 Oracle数据库历来以价格昂贵出名,当然贵有贵的道理,成为一个Oracle DBA也是令人羡慕的事情,如果程序员熟悉Oracle使用也有机会接触到大 ...
- Asp.net 实现Session分布式储存(Redis,Mongodb,Mysql等) sessionState Custom
对于asp.net 程序员来说,Session的存储方式有InProc.StateServer.SQLServer和Custom,但是Custom确很少有人提及.但Custom确实最好用,目前最实用和 ...
- Oracle EBS Form 发布到Server端的注意事项
前段时间在本地XP系统上测试了一些整合javabean的Form例子,想着发布到服务器段去看看能否运行正常,一开始以为会和本地XP系统一样,部署到相关的目录下进行一些配置就可以了,但实际过程却和想象的 ...
- 将Win10变回Win7/WinXP界面
前往 Classic Shell 的网站(传送门:http://www.classicshell.net/)进行下载安装.第一次开启 时,程序会让你选择一款面板:第一个是 Windows 2000 的 ...
- linux下发布的执行文件崩溃的问题定位 心得一则
C++ Release版本发布到客户处执行时,如果程序崩溃,有什么办法能够快速的确认程序的问题呢? 如果能gdb调试的话,比较简单了,可以使用gdb命令,类似如下: gdb ##set args ** ...
- Android Studio简单设置
IDE外观&行为 修改主题,修改全局字体 修改主题,想用炫酷的深色主题,就改成Darcula吧:字体的话,选一个带中文的,要不然会有很多口口,我这里用Microsoft YaHei UI,很不 ...