服务器日志logging变得不合时宜,有些系统服务会死机,直到硬重启

我们的问题的要点是,我们失去了SSH访问我们的VPS和我们的日志文件混杂起来。 通过我们的托pipe服务提供商的Web控制台进行硬重启似乎可以解决问题,但问题仍然存在。


更多细节

这似乎是随机发生的,大约每两个星期一次。 我们通常首先注意到的症状是我们无法通过sshlogin; 奇怪的是,服务器仍然提示我们input密码,但从来没有让我们login.Apache继续卡车运行,但其他系统服务也停止。

在发生“错误事件”时,我们在所有的日志文件(/ var / log中的所有内容以及Apache的虚拟主机日志和其他文件)中都会看到大量的随机垃圾。 垃圾包含大量的空字节,一些unicode二进制查找的东西,随机的ASCII大块,其他日志文件的一部分,和CSS / JavaScript(见下面的例子)。 这似乎是写缓冲区caching到当前打开的文件,但我不知道为什么,甚至会发生这种情况。 Fedora使用syslogd进行日志logging,但是我无法find任何明显的问题。

我们的服务器是运行Fedora 12的VPS。它的主要职责是运行Apache,Postfix和ssh。 Apache服务的站点使用PHP / MySQL(最后一次发生这种情况时,我安装了Suhosin补丁,以防止这是一个奇怪的缓冲区溢出攻击或其他)。

我们为我们的ssh / htpasswd用户提供了安全的密码,并且日志(我们可以读取的部分)并不表示我们的服务器已经从“内部”泄露了。


示例Borked日志文件

这是我们的cron日志的一个片段。 这一个有一堆空字节和其他二进制数据,但如上所述,其他一些文件包含ASCII和/或其他文件块:

Sep 23 03:05:01 HostName CROND[3208]: (munin) CMD (test -x /usr/bin/munin-cron && /usr/bin/munin-cron) Sep 23 03:05:01 HostName CROND[3209]: (user1) CMD (/path/to/development.domain.com/public/protected/yiic serverState) Sep 23 03:10:01 HostName CROND[3792]: (root) CMD (/usr/lib64/sa/sa1 -S DISK 1 1) Sep 23 03:10:01 HostName CROND[3795]: (user1) CMD (/path/to/development.domain.com/public/protected/yiic serverState) Sep 23 03:10:01 HostName CROND[3793]: (munin) CMD (test -x /usr/bin/munin-cron && /usr/bin/munin-cron) Sep 23 03:15:01 HostName CROND[4414]: (munin) CMD (test -x /usr/bin/munin-cron && /usr/bin/munin-cron) Sep 23 03:15:01 HostName CROND[4415]: (user1) CMD (/path/to/development.domain.com/public/protected/yiic serverState) Sep 23 03:20:01 HostName CROND[5000]: (root) CMD (/usr/lib64/sa/sa1 -S DISK 1 1) Sep 23 03:20:01 HostName CROND[5001]: (munin) CMD (test -x /usr/bin/munin-cron && /usr/bin/munin-cron) Sep 23 03:20:01 HostName CROND[5003]: (user1) CMD (/path/to/development.domain.com/public/protected/yiic serverState) Sep 23 03:25:01 HostName CROND[5590]: (munin) CMD (test -x /usr/bin/munin-cron && /usr/bin/munin-cron) Sep 23 03:25:01 HostName CROND[5591]: (user1) CMD (/path/to/development.domain.com/public/protected/yiic serverState) Sep 23 03:30:01 HostName CROND[6175]: (munin) CMD (test -x /usr/bin/munin-cron && /usr/bin/munin-cron) Sep 23 03:30:01 HostName CROND[6174]: (root) CMD (/usr/lib64/sa/sa1 -S DISK 1 1) Sep 23 03:30:01 HostName CROND[6176]: (user1) CMD (/path/to/development.domain.com/public/protected/yiic serverState) Sep 23 03:35:01 HostName CROND[6763]: (munin) CMD (test -x /usr/bin/munin-cron && /usr/bin/munin-cron) Sep 23 03:35:01 HostName CROND[6764]: (user1) CMD (/path/to/development.domain.com/public/protected/yiic serverState) Sep 23 03:40:01 HostName CROND[7347]: (root) CMD (/usr/lib64/sa/sa1 -S DISK 1 1) Sep 23 03:40:01 HostName CROND[7349]: (munin) CMD (test -x /usr/bin/munin-cron && /usr/bin/munin-cron) Sep 23 03:40:01 HostName CROND[7350]: (user1) CMD (/path/to/development.domain.com/public/protected/yiic serverState) ^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^$     .]      ^[ Z      H*[ݬ^T ՜^F Ük֜ ՜0 |  Ԝ0  5 ֜+ ^\J̜aMݺu3^] 'M  I & [ n^Vdz &""^RȳZ uݳݳʳ  ۳g:h  ; 5^U;k j C  Rj C ^Zv  Ρġ^\֡T]]   2^@@aa!   Q^^nq ]v֛7oƚ5k`4^Z1^? |^D^E^E!22^R   P TX n  aޚwbgM$ ^KQ     l4U ;   e  v   7u֯7oޯDVV^V j5      ^O Vk   5^Q^QI%   ͱ α ƍ^[   ^O􁏏z=BBB   ^L^@HIIAHH ŁZ^    9䁏^[/  9䁏 ၏ ^y灏Pb^Nk2^X^Lȁ́́DJJ RRR   ^E  `q ]v֛7oƇ^_~^H ш ^{^MAAA 7o^^T*^U    v Zx vψ ;  &""   9k777t ވ^]^@p  E   `    ƈوug   ψ  ѣ8v ^X"""    ={ `ǎ^]ؽ{ Ž^C5 νZν^Z  o  ^Z搷 ^]  s(1 5ՐԐԐ ېې^[NNNprr   Oː묛  5^Q^QIŬ笛Y7^Sv֬ լ0$  ֭    ٭zv֭DD$^U g-PFF  Wdd$    !&&^F^Q^Q^QHMMEDD^D   -ֳ    9 ^[/  9  aG* ^\J̳aM  eݭ[7      s  yDGGc۶m ѣ^GN <  ^];   ^P   У tf أY^S^Q T f-Rtt4ޣ~ m888@ ףãݣݣ^]^@ V Q\\|ף   " $$  ң%   ^B   ^Z Fԣx^@$  N^G N   0    ,,^Lyyy^V  Y W ^\   R ^\ ְ# w^N%氦 gX߰  ^V <밦尦˗×h4bɒ%HJJBZZ^Z*++1~ x̚5^K   HII  M ,ֳ &"")  9볦ʳʳJ^\<x^P   P T8q⳦^D^^~  zc춳   쫯 ϫ^B^@ ~ i 髯O^?Bjj*«ëë^A^@ Hk૯_K쫯 嫯 a^N ƫK a$     6m^Z n݊ { "11ъl= Y^S^Q T 7 @ W Ɗܹs1nܹ8DFFb   CRR^R L   ^[7"66 b= YˈWÈ^\   RÈ^\  Z  s(1 -و]g݈T쬉 H*v֬̈́  |5̄!߄x)5̄!o^M;Ry焉Pb^N[bgMDD$^P;넉f^Ä΄Z ^Z愉 o  ^Z搷 ^]  s(1 -  &""^R   ̪   Ӫ骷p  e^@@nn  $ 6m d   5^Q^QI  κW ^X z5 ^P^U^U   ^@ ={^Vyyy6;P^C /   C ^N    ǰað ӰO?!55^U   ^@   p 5  %vְ հ0 |   0  5 H  C 9l  7 988 ٰg ŢE     b  ͢0^Z ͵6      ˵/#//^O f͵µ         ^N^@P յ(..     ^H% p6^XP   ^@      ^Z^O^@]~;^M/t<jkE   . `^N    Ď/MM Kp0s؎q^NCa!J^R^RP    f 4  _~ ?   pvvƎ ի1a«^D  ^_;v  ^[o ^A__ f_  ***Э[78;;#++^Kj ^ZEEE    V 5[^S^U^U   x sh4^ZѭYŭ֔   %8X֔9  9䘣 䘣 R#e^N Y CY9^@ؘ옣4 $  ֭    ٭:v֭DD$^U;k^Q    r J   ^A^@bbb^P^Q^Q  TDDD ::ڭb-;k j C  Rj Cޭ^Zv  Ρġ^\ dw   `  9s t R^L^\8^P%%%   ¡ɓ'ѱcG^T^V^V±߱߱^_: αl=;k""    @˖-CDD^D|||Lۖ z=ܖݖݖ^A^@j ^ZŖŖŖwՖՖ^T^U $!^A  . zظF ^Q и ܸm۸D  $ ^@      ^Z^O^@]~;^M/t<jkE   . `^N    Ď/MM Kp0s؎q^NCa!J^R^RP    fw  븺   d///deeA V   ^H   иj f뢢 ^P^_^_/x^^ F^C___Qk^S[S  ^F  `Y碢`^N梢 c   CJ  9Ģfa^Ne墢^@` Ӣ -⢢`=s梢L   cڴiغu+  ċċD u fMDD$ ^K^K   o 9.\ `  Mk j Y7 M 6pr    e˖!""^B>>> Y ^D r8;;   _F^^^^f͚    ۚhu^Ù˙q ^Ù^E| ə'  ^SF ^\ +W ةhu^Ù˙Q'::^Zo    ^OԀ ^\+W Āرc1nܱ8 8C^@ ϱ2p @| ٱg    DZ^_^? ^[7nرhu±^M^[6^L>>>8~ 8 y ^Yıűű5x ( 2  $ Sep 23 20:11:21 HostName crond[1077]: (CRON) INFO (running with inotify support) Sep 23 20:15:01 HostName CROND[1578]: (user1) CMD (/path/to/development.domain.com/public/protected/yiic serverState) Sep 23 20:15:01 HostName CROND[1579]: (munin) CMD (test -x /usr/bin/munin-cron && /usr/bin/munin-cron) Sep 23 20:20:01 HostName CROND[2192]: (root) CMD (/usr/lib64/sa/sa1 -S DISK 1 1) Sep 23 20:20:01 HostName CROND[2193]: (munin) CMD (test -x /usr/bin/munin-cron && /usr/bin/munin-cron) Sep 23 20:20:01 HostName CROND[2194]: (user1) CMD (/path/to/development.domain.com/public/protected/yiic serverState) Sep 23 20:25:01 HostName CROND[2841]: (user1) CMD (/path/to/development.domain.com/public/protected/yiic serverState) Sep 23 20:25:01 HostName CROND[2843]: (munin) CMD (test -x /usr/bin/munin-cron && /usr/bin/munin-cron) Sep 23 20:30:01 HostName CROND[3432]: (user1) CMD (/path/to/development.domain.com/public/protected/yiic serverState) Sep 23 20:30:01 HostName CROND[3433]: (munin) CMD (test -x /usr/bin/munin-cron && /usr/bin/munin-cron) Sep 23 20:30:01 HostName CROND[3436]: (root) CMD (/usr/lib64/sa/sa1 -S DISK 1 1) Sep 23 20:35:01 HostName CROND[4022]: (munin) CMD (test -x /usr/bin/munin-cron && /usr/bin/munin-cron) Sep 23 20:35:01 HostName CROND[4023]: (user1) CMD (/path/to/development.domain.com/public/protected/yiic serverState) Sep 23 20:40:01 HostName CROND[4671]: (munin) CMD (test -x /usr/bin/munin-cron && /usr/bin/munin-cron) Sep 23 20:40:01 HostName CROND[4672]: (user1) CMD (/path/to/development.domain.com/public/protected/yiic serverState) Sep 23 20:40:01 HostName CROND[4675]: (root) CMD (/usr/lib64/sa/sa1 -S DISK 1 1) Sep 23 20:45:01 HostName CROND[5288]: (munin) CMD (test -x /usr/bin/munin-cron && /usr/bin/munin-cron) Sep 23 20:45:01 HostName CROND[5289]: (user1) CMD (/path/to/development.domain.com/public/protected/yiic serverState) Sep 23 20:50:01 HostName CROND[5929]: (munin) CMD (test -x /usr/bin/munin-cron && /usr/bin/munin-cron) Sep 23 20:50:01 HostName CROND[5930]: (user1) CMD (/path/to/development.domain.com/public/protected/yiic serverState) Sep 23 20:50:01 HostName CROND[5928]: (root) CMD (/usr/lib64/sa/sa1 -S DISK 1 1) 

这里是我们网站的application.log片段 (我们使用Yii Framework,这是应用程序级logging发生的地方)。 这其中包括其他文件(日志文件,svn元数据等),二进制数据,ASCII等块


有没有人见过这样的事情?

这里有很多未知的东西,但我在考虑文件系统的失败。

正在运行的守护进程可能有足够的内容以ramcaching来接受连接,但不能完成完整的身份validation。

混合文件是文件系统(或其恢复)变坏的有力指标。 这可能是由软件(实验内核/文件系统/ …)或硬件造成的。 我倾向于与后者。 在磁盘上运行适当的文件系统检查和硬件testing(坏块,如果可以的话,运行memtest86)。

另外,您必须考虑到这些文件可能不限于日志文件。 它也可以在代码或数据库中。 我build议你validation数据是否有效…

直到文件系统怪异的部分,你的症状看起来就像RAM耗尽。 由于SSH已经在运行,所以SSH会提示你,但是find内存来产生一个新进程是很慢的。 系统服务因为被OOM杀手摧毁而死亡。 在日志中是否有任何引用?

你有没有关于内存使用量或系统负载的指标,最好logging在有问题的机器外部?

远程login也是非常有帮助的 – 然后你可以看到是否有重要的线索被文件损坏覆盖。 Fedora使用rsyslogd ,而rsyslogd站点有安全设置的指示 。