nginx错误日志出现worker process 24939 exited on signal 11 (core dumped)

本文记录了使用Google浏览器访问Nginx服务器时出现的文件加载异常问题及解决方案。通过分析Nginx错误日志,发现大量worker进程因信号11异常退出并触发core dump,最终定位为搜索引擎蜘蛛爬取加密内容时引发的内存访问越界错误。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

今天发现用google浏览器访问nginx服务器时,部分文件请求无法正常加载,导致页面显示不正常。查看nginx错误日志,出现了大量这样的数据:

[plain]  view plain copy
  1. 2015/04/22 13:31:59 [alert] 13175#0: worker process 2703 exited on signal 11 (core dumped)  
  2. 2015/04/22 13:31:59 [alert] 13175#0: worker process 2711 exited on signal 11 (core dumped)  
  3. 2015/04/22 13:31:59 [alert] 13175#0: worker process 2716 exited on signal 11 (core dumped)  
  4. 2015/04/22 13:31:59 [alert] 13175#0: worker process 2721 exited on signal 11 (core dumped)  
  5. 2015/04/22 13:32:00 [alert] 13175#0: worker process 2634 exited on signal 11 (core dumped)  
  6. 2015/04/22 13:32:00 [alert] 13175#0: worker process 2725 exited on signal 11 (core dumped)  
  7. 2015/04/22 13:32:01 [alert] 13175#0: worker process 2734 exited on signal 11 (core dumped)  

查看dmesg也发现了错误  

#dmesg

[plain]  view plain copy
  1. nginx[2703]: segfault at 359 ip 000000000043f2b6 sp 00007fff7071ef40 error 4 in nginx[400000+94b000]  
  2. nginx[2711]: segfault at 359 ip 000000000043f2b6 sp 00007fff7071ef40 error 4 in nginx[400000+94b000]  
  3. nginx[2716]: segfault at 359 ip 000000000043f2b6 sp 00007fff7071ef40 error 4 in nginx[400000+94b000]  
  4. nginx[2721]: segfault at 359 ip 000000000043f2b6 sp 00007fff7071ef40 error 4 in nginx[400000+94b000]  
  5. nginx[2725]: segfault at 359 ip 000000000043f2b6 sp 00007fff7071ef40 error 4 in nginx[400000+94b000]  
  6. nginx[2734]: segfault at 359 ip 000000000043f2b6 sp 00007fff7071ef40 error 4 in nginx[400000+94b000]  


这种信息一般都是由内核内存访问越界造成的,不管是用户态程序还是内核态程序访问越界都会出core,并在系统日志里面输出一条这样的信息。这条信息的前面分别是访问越界的程序名,进程id号,访问越界的地址以及当时进程进程堆栈地址等信息,比较有用的信息是最后的error number.在上面的信息中,error number 是4。下面详细介绍一下error number的信息:


在上面的例子中,error number是4,转成二进制就是100,即bit2=1,bit1=0,bit0=0


error number是由3个字位组成的,从高到低分别是bit2、bit1、bit0,所以它的取值范围是0~7


bit2:值为1时表示 是用户态程序内存访问越界,值为0时表示 是内核态程序内存访问越界
bit1:值为1时表示 是写操作导致内存访问越界,值为0时表示 是读操作导致内存访问越界
bit0:值为1表示没有足够的权限访问非法地址的内容,值为0时表示访问的非法地址根本没有对应的页面,也就是无效地址。


所以error 4 就表示用户态程序nginx进行读操作时访问的地址无效。


那么问题怎么解决呢?幸好找到了这篇文章:http://blog.youkuaiyun.com/xuyaqun/article/details/5343021。作者遇到的情况跟我的很相似。


原来是搜索引擎的蜘蛛在爬取到加密部分时,得不到正确的路径,又没有被定位到错误页导致的。





附:段错误 segfault 是什么
段错误是指访问的内存超出了系统给这个程序所设定的内存空间,例如访问了不存在的内存地址,访问了系统保护的内存地址,访问了只读的内存地址等等情况。这里贴出一个对“段错误的准确定义”(参考Answers.com)


A segmentation fault (often shortened to segfault) is a particular error condition that can occur during the operation of computer software. In short, a segmentation fault occurs when a program attempts to access a memory location that it is not allowed to access, or attempts to access a memory location in a way that is not allowed (e.g., attempts to write to a read-only location, or to overwrite part of the operating system). Systems based on processors like the Motorola 68000 tend to refer to these events as Address or Bus errors.
Segmentation is one approach to memory management and protection in the operating system. It has been superseded by paging for most purposes, but much of the terminology of segmentation is still used, "segmentation fault" being an example. Some operating systems still have segmentation at some logical level although paging is used as the main memory management policy.

On Unix-like operating systems, a process that accesses invalid memory receives the SIGSEGV signal. On Microsoft Windows, a process that accesses invalid memory receives the STATUS_ACCESS_VIOLATION exception.

from:http://blog.youkuaiyun.com/hexuan1/article/details/45222867

Nginx worker process退出并显示信号11时,这通常表示出现了段错误(Segmentation Fault)。段错误通常是由于访问无效的内存地址或者内存访问越界引起的。 出现这种错误的原因可能有很多,包括: 1. 第三方模块或插件的Bug:检查是否有最新版本的第三方模块或插件,并确保它们与Nginx版本兼容。 2. 配置错误:检查Nginx的配置文件,确保没有错误或冲突的指令。 3. 内存问题:检查服务器的内存使用情况,确保没有内存不足或者内存泄漏的问题。 4. 操作系统问题:某些操作系统问题可能导致Nginx worker process崩溃。尝试更新操作系统和相关软件包,或者查看操作系统日志以获取更多信息。 为了解决这个问题,你可以尝试以下几个步骤: 1. 检查Nginx配置文件:确保配置文件没有错误或冲突的指令。可以使用Nginx的配置检查工具来验证配置文件的正确性。 2. 更新Nginx和相关模块:确保你正在使用最新版本的Nginx,并更新所有相关的模块和插件。 3. 禁用第三方模块或插件:如果你安装了第三方模块或插件,尝试禁用它们并逐个重新启用,以确定是否有某个模块或插件引起了问题。 4. 检查服务器内存:确保服务器有足够的可用内存,并检查是否存在内存泄漏的问题。 如果问题仍然存在,你可以尝试在Nginx的配置文件中启用调试日志,并查看日志文件以获取更详细的错误信息。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值