写了个Python脚本监控nginx进程

接上一文用iptables让SSH服务对陌生人说不。还是有点担心这个学期内,nginx可能会因为系统各种原因而出现异常退出,导致Web服务暂停。所以,又来了一个方案。

#!/usr/bin/env python
import os, sys, time

while True:
    time.sleep(3)
    try:
        ret = os.popen('ps -C nginx -o pid,cmd').readlines()
        if len(ret) < 2:
            print "nginx process killed, restarting service in 3 seconds."
            time.sleep(3)
            os.system("service nginx restart")
    except:
        print "Error", sys.exc_info()[1]

设置文件可执行属性,加入到/etc/rc.local,总算放心了。
这种方法还可以监控别的进程,我相信应该有现成的监控软件,但是我觉得写个脚本更方便。

用iptables让SSH服务对陌生人说不

今晚老师跟我说服务器的Web挂了,但是FTP可以用。我登录了这个OpenVZ的VPS,发现nginx进程没了。为什么会发生这么神奇的事情呢?

我在/var/log/nginx下翻了日志文件,没有发现任何出错信息。然后想会不会是系统内存超了,被OpenVZ内核KILL了呢?查了一下,果然发现:

uid resource held maxheld barrier limit failcnt
3004536: kmemsize 3626521 4652581 51200000 51200000 0
lockedpages 0 0 2048 2048 0
privvmpages 34041 131231 131200 262200 3
shmpages 1281 1297 128000 128000 0

私有虚拟页面privvmpages的数值超了,有3次失败请求。一个页面4KB,所以这个VPS的内存是512M.

我在这个VPS上只开启了nginx,vsftpd,mysqld,php-cgi,xxfpm等服务,不可能占用那么多内存吧。php的进程数量是用自己写的xxfpm限制死了,只能有3个进程。这些所有的服务一共才占用100多MB内存,怎么可能超了512M呢?
继续阅读

用水清洗了CPU风扇,解决了笔记本散热问题

我用的Y460笔记本散热一直比较差,最近已经到了无法忍受的地步了。开机一段时间后,即使不怎么运行软件,温度也很高,底座很烫手,真的可以煎鸡蛋的!这机子温度一高起来,不会死机,而是CPU自动降频。导致的结果是打开网页,CPU用满了,等了半天还没反应过来。

本来还想买个散热器来解决这个问题,因为上个月在北京的时候就是用着散热器才不卡机。但是使用外部的风扇来降温不是根本的解决办法,换个地方上网还是会有这个问题。所以,决定自己拆开笔记本,把风扇取了出来!还挺好拆的,拆了之后看到风扇上已经积满了灰尘,吹也吹不掉,只能用水冲,用刷子擦了。清洗过后的风扇轻了很多,转起来也很给力了!

今天开了一天的笔记本也没有发现温度特别高,所以这个问题已经完美解决,不再困扰我了 🙂

玩玩Tornado,写了一个网络相册分享照片

Tornado是一个用python写的小巧的开源网站服务器。安装来玩了一下,的确很强大,响应速度很快!这东西是Facebook开发的,但奇怪的是官网 http://www.tornadoweb.org/ 的IP查出来却是Google的呢,难怪连华工的校园网也能连上了。

花了一晚时间,写了如下的一个Web相册,用来分享照片给同学 🙂 可见开发效率之高,o(∩∩)o…哈哈,代码量也很少。

界面简简单单的,功能挺实用。
继续阅读

完美解决Linux下Intel 1000 BGN间断丢包的bug

我的Y460笔记本接入A哥的无线路由的时候,不到一会,就会出现完全丢包的现象。等几分钟之后,又好了,但是不到10多秒,又丢了。

这种现象一直困扰了我几年多,我以前曾经尝试过安装官方提供的网卡驱动或者固件,都无法解决这个问题。今晚好不容易想使用一下荣哥分享的校园网,这个问题重现,真的烦死了!

dmesg一下日志,如下:
继续阅读

ARM版Ubuntu源

我的手机用的是Ubuntu maverick的arm版,可以使用apt-get来给手机安装系统软件包。例如常用的一些gcc,tcpdump,apache2,php,升级内核等。

官方的arm源并不在archive.ubuntu.com上,而是在ports.ubuntu.com。
修改/etc/sources.list为:

deb http://ports.ubuntu.com maverick main restricted universe multiverse

然后更新软件包信息。
继续阅读