linux – 我的VPS崩溃,我不明白为什么

前端之家收集整理的这篇文章主要介绍了linux – 我的VPS崩溃,我不明白为什么前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我现在有一个与Linode的VPS.我的监控服务警告我,我托管的网站已经关闭.我使用Lish,Linode通过SSH连接直接带外访问控制台但不使用SSH的方法来查看任何错误消息.这就是我所看到的:

我检查了我的Munin日志,看看内存使用量是否有峰值,并且确实在交换图的适当时间有一个峰值:

但是,内存图上没有峰值(虽然交换看起来似乎略有上升):

我重新启动了服务器,它一直运行良好.我检查了Apache访问和错误日​​志,并没有看到任何可疑的.服务器重新启动之前syslog中的最后一个条目是IMAP守护程序出错并且似乎没有关联:

Oct 28 18:30:35 hostname imapd: TIMEOUT,user=user@xxxxxxxxxxxxx.com,ip=[::ffff:XX.XX.XX.XX],headers=0,body=0,rcvd=195,sent=680,time=1803
# all of the startup logs below here
Oct 28 18:40:33 hostname kernel: imklog 5.8.1,log source = /proc/kmsg started.

我试过检查dmesg,但也没有看到任何可疑的东西.最后几行:

VFS: Mounted root (ext3 filesystem) readonly on device 202:0.
devtmpfs: mounted
Freeing unused kernel memory: 412k freed
Write protecting the kernel text: 5704k
Write protecting the kernel read-only data: 1384k
NX-protecting the kernel data: 3512k
init: Failed to spawn console-setup main process: unable to execute: No such file or directory
udevd[1040]: starting version 173
Adding 524284k swap on /dev/xvdb.  Priority:-1 extents:1 across:524284k SS
init: udev-fallback-graphics main process (1979) terminated with status 1
init: plymouth main process (1002) killed by SEGV signal
init: plymouth-splash main process (1983) terminated with status 2
EXT3-fs (xvda): using internal journal
init: plymouth-log main process (2017) terminated with status 1
init: plymouth-upstart-bridge main process (2143) terminated with status 1
init: ssh main process (2042) terminated with status 255
init: failsafe main process (2018) killed by TERM signal
init: apport pre-start process (2363) terminated with status 1
init: apport post-stop process (2371) terminated with status 1

我尝试使用Google搜索错误消息(内核BUG at mm / swapfile.c:2527!)并找到一些与Xen相关的主题(Linode使用Xen):

> Xen-devel Re: kernel BUG at mm/swapfile.c:2527! was 3.0.0 Xen – Xen Source
> Mailing List Archive: Re: Re: kernel BUG at mm/swapfile.c:2527! was 3.0.0 Xen pv guest – BUG: Unable to handle

但是,我发现的任何信息似乎都没有指出任何解决方案.我将升级到Linode提供的最新内核(从2.6.39.1-linode34到3.0.4-linode38).

现在还有什么我可以做的来诊断这个问题,或者将来是否会再次发生这个问题?我错过了什么吗?是否有人对可能引发此事的因素有所了解?

如果我能提供任何其他信息,请告诉我.万分感谢.

解决方法

你重新启动系统之前或之后是否拉过Munin图表?如果之后,空白部分之后的部分很可能在您重新启动之后,并且无关紧要.我猜它会在之后,因为你的交换使用已大幅下降……

在你的问题中,你忽略了空白部分…你说“图表没有显示内存使用率上升”,但他们真正显示内容是在内存可能上升的时候没有数据. munin是一个很棒的工具,但报告这样的实例很糟糕,因为它只报告每5分钟一次的信息,如果系统繁忙,它可能根本不报告任何内容.

你是否已经完成了可以运行的Apache实例数的内存数学运算?我的意思是“ps awwlx –sort = RSS | grep apache”并查看每个Apache实例使用的内存量.例如:

root@theobromine:~# ps awwlx --sort=RSS | grep apache
0     0 18497 18485  20   0   1788   528 -      S+   pts/0      0:00 grep apache
5    33 18458  5384  20   0  28468  6700 -      S    ?          0:00 /usr/sbin/apache2 -k start
5    33 18470  5384  20   0  28468  6700 -      S    ?          0:00 /usr/sbin/apache2 -k start
5    33 18480  5384  20   0  28468  6700 -      S    ?          0:00 /usr/sbin/apache2 -k start
5    33 18481  5384  20   0  28468  6700 -      S    ?          0:00 /usr/sbin/apache2 -k start
5    33 18457  5384  20   0  28468  6708 -      S    ?          0:00 /usr/sbin/apache2 -k start
5     0  5384     1  20   0  28336 11796 -      Ss   ?          0:16 /usr/sbin/apache2 -k start

这是我们正在关注的第8列.在这种情况下,每个实例使用6.7MB,实际上相当小.但现在我看看我有多少记忆:

root@theobromine:~# free
             total       used       free     shared    buffers     cached
Mem:        775196     643848     131348          0      77964     268788
-/+ buffers/cache:     297096     478100
Swap:      1148636       3368    1145268

所以我有800MB的RAM …现在,我可以做数学并说在最好的情况下我可以运行800 / 6.7 = 119个Apache实例.但这并没有为任何其他应用程序或操作系统或缓存等留下任何空间……

但实际上你最多有478MB(“免费”下的第二列),减去当前运行的Apaches的数量(6.7 * 6 – 我上面只运行了6个Apache实例),留下了大约520MB的RAM(如果你没有留下缓存,当然).所以我真正可以运行的最大值更像是77个实例.

那么我实际上跑了多少?

root@theobromine:~# grep MaxClients /etc/apache2/apache2.conf
# MaxClients: maximum number of server processes allowed to start
    MaxClients          150
# MaxClients: maximum number of simultaneous client connections
    MaxClients          150

啊,Apache并没有限制我比我更少的内存.因此,如果超过77个客户端同时连接到我的Web服务器,我可能会开始颠簸.

我经常看到这一点:“我需要能够同时处理500个网络连接.”但是你看看他们的Apache实例并且他们正在使用60MB(不是一个非常大的大小),但是当你说他们需要将他们的VPS升级到32BG的RAM时他们就会惊慌失措.

猜你在找的Linux相关文章