在崩溃之前如何知道服务器是否耗尽内存

我有一个服务器,不断崩溃。 我知道有一个服务器崩溃的原因。 但是,如果原因是在系统崩溃之前系统内存不足, 我应该如何确认是因为什么? 我应该看什么日志文件? 我应该找什么线/错误消息? 我正在运行CentOS。 大量使用phpparsing超过2 GB的xml文件。 服务器有16GB RAM。

编辑1

[root@61540 ~]# free -m total used free shared buffers cached Mem: 16035 1526 14509 0 40 1002 -/+ buffers/cache: 483 15552 Swap: 8197 0 8197 

编辑2 / var / log / messages

 Feb 17 20:38:26 61540 syslogd 1.4.1: restart. Feb 17 20:38:26 61540 proftpd[3896]: 66.90.101.85 - received SIGHUP -- master server reparsing configuration file Feb 17 22:23:06 61540 avahi-daemon[3984]: recvmsg(): Resource temporarily unavailable Feb 17 23:07:37 61540 proftpd[10620] - (Several lines of ftp session) Feb 18 23:03:48 61540 syslogd 1.4.1: restart. Feb 18 23:03:48 61540 kernel: klogd 1.4.1, log source = /proc/kmsg started. Feb 18 23:03:48 61540 kernel: Linux version 2.6.18-308.el5 (mockbuild@builder10.centos.org) (gcc version 4.1.2 20080704 (Red Hat 4.1.2-52)) #1 SMP Tue Feb 21 20:06:06 EST 2012 Feb 18 23:03:48 61540 kernel: Command line: ro root=LABEL=/ Feb 18 23:03:48 61540 kernel: BIOS-provided physical RAM map: Feb 18 23:03:48 61540 kernel: BIOS-e820: 0000000000010000 - 000000000009a000 (usable) Feb 18 23:03:48 61540 kernel: BIOS-e820: 000000000009f800 - 00000000000a0000 (reserved) Feb 18 23:03:48 61540 kernel: BIOS-e820: 00000000000f0000 - 0000000000100000 (reserved) Feb 18 23:03:48 61540 kernel: BIOS-e820: 0000000000100000 - 00000000cfda0000 (usable) Feb 18 23:03:48 61540 kernel: BIOS-e820: 00000000cfda0000 - 00000000cfdd1000 (ACPI NVS) Feb 18 23:03:48 61540 kernel: BIOS-e820: 00000000cfdd1000 - 00000000cfe00000 (ACPI data) Feb 18 23:03:48 61540 kernel: BIOS-e820: 00000000cfe00000 - 00000000cff00000 (reserved) Feb 18 23:03:48 61540 kernel: BIOS-e820: 00000000e0000000 - 00000000f0000000 (reserved) Feb 18 23:03:48 61540 kernel: BIOS-e820: 00000000fec00000 - 0000000100000000 (reserved) Feb 18 23:03:48 61540 kernel: BIOS-e820: 0000000100000000 - 000000042f000000 (usable) Feb 18 23:03:48 61540 kernel: DMI 2.4 present. Feb 18 23:03:48 61540 kernel: No NUMA configuration found Feb 18 23:03:48 61540 kernel: Faking a node at 0000000000000000-000000042f000000 Feb 18 23:03:48 61540 kernel: Bootmem setup node 0 0000000000000000-000000042f000000 Feb 18 23:03:48 61540 kernel: Memory for crash kernel (0x0 to 0x0) notwithin permissible range Feb 18 23:03:48 61540 kernel: disabling kdump Feb 18 23:03:48 61540 kernel: ACPI: PM-Timer IO Port: 0x808 Feb 18 23:03:48 61540 kernel: ACPI: LAPIC (acpi_id[0x00] lapic_id[0x00] enabled) Feb 18 23:03:48 61540 kernel: Processor #0 5:1 APIC version 16 Feb 18 23:03:48 61540 kernel: ACPI: LAPIC (acpi_id[0x01] lapic_id[0x01] enabled) Feb 18 23:03:48 61540 kernel: Processor #1 5:1 APIC version 16 Feb 18 23:03:48 61540 kernel: ACPI: LAPIC (acpi_id[0x02] lapic_id[0x02] enabled) Feb 18 23:03:48 61540 kernel: Processor #2 5:1 APIC version 16 Feb 18 23:03:48 61540 kernel: ACPI: LAPIC (acpi_id[0x03] lapic_id[0x03] enabled) Feb 18 23:03:48 61540 kernel: Processor #3 5:1 APIC version 16 Feb 18 23:03:48 61540 kernel: ACPI: LAPIC (acpi_id[0x04] lapic_id[0x04] enabled) Feb 18 23:03:48 61540 kernel: Processor #4 5:1 APIC version 16 Feb 18 23:03:48 61540 kernel: ACPI: LAPIC (acpi_id[0x05] lapic_id[0x05] enabled) Feb 18 23:03:48 61540 kernel: Processor #5 5:1 APIC version 16 Feb 18 23:03:48 61540 kernel: ACPI: LAPIC (acpi_id[0x06] lapic_id[0x06] enabled) Feb 18 23:03:48 61540 kernel: Processor #6 5:1 APIC version 16 Feb 18 23:03:48 61540 kernel: ACPI: LAPIC (acpi_id[0x07] lapic_id[0x07] enabled) Feb 18 23:03:48 61540 kernel: Processor #7 5:1 APIC version 16 

  • 快速SSD与服务器中的RAM
  • Debian中/ lib / init / rw有什么用?
  • 使用RAM磁盘加速SQL Server临时表处理
  • 提高Exim性能:在RAMdisk上安装消息队列
  • 从Linux ramdisk服务html
  • 一个PHP应用程序将受益于从RAM驱动器提供服务吗?
  • 2 Solutions collect form web for “在崩溃之前如何知道服务器是否耗尽内存”

    您应该检查/var/log/messages在这种情况下, dmesg命令将不会有用,因为它仅显示自上次引导以来的内核消息。

    “内存不足”通常不足以完全崩溃Linux。 当内存不足( OOM杀手 )时,Linux将开始查杀进程。 所以你可能会寻找一些内核恐慌 。 如果您使用less的读取日志,您可以search按/键。

    但底线是:您应该先阅读/ var / log / messages。 它是按时间sorting的,所以很容易find服务器上次启动的时刻。 检查之前发生的事情,这会导致您的服务器崩溃。

    如果linux耗尽内存通常启动OOM杀手(内存不足)。 这是一个杀死其他进程以释放内存的内核进程。 如果发生这种情况,你应该在inputdmesg时看到日志。

    试试这个: dmesg | grep -i oom dmesg | grep -i oom 。 如果没有输出,OOM杀手可能不会杀死你的进程。

    服务器问题集锦,包括 Linux(Ubuntu, Centos,Debian等)和Windows Server服务器.