052011
 

monit是一款非常不错的进程监控程序,占用资源极少。官网:http://mmonit.com/monit/

可以使用monit来监控系统负载,进程是否正常运行等。

最近每天凌晨使用crontab统计数据的时候,map reduce 计算过大,容易造成mongodb崩溃,在没有检查出明确的问题之前,为了确保正常运行,所以需要在mongodb挂掉的时候自动重启,因此就找到了这么一段脚本(From:https://gist.github.com/345611


check process mongodb with pidfile /db/path/mongod.lock
group database
start program = "/etc/init.d/mongodb start"
stop program = "/etc/init.d/mongodb stop"
if failed host 127.0.0.1 port 28017 protocol http
and request "/" with timeout 10 seconds then restart
if 5 restarts within 5 cycles then timeout
172011
 

下午在一台服务器上安装Mongodb的时候忘记了所使用的ubuntu server的版本号,Google了一下。

发现官方有Help:https://help.ubuntu.com/community/CheckingYourUbuntuVersion

sb_release -a

 

Update: Javaeye上发现了更多的方法:UBUNTU查看版本的方法

cat /etc/issue
cat /proc/version
uname -a
lsb_release -a
cat /etc/lsb-release
082011
 

cacti是款不错的系统监控程序。安装也是相当简单,做一个简单的记录吧。

首先安装好 php + mysql 运行环境。这个不多加赘言了。

然后安装好SNMP+RRDTool


sudo apt-get install snmpd snmp rrdtool

然后编辑 /etc/snmp/snmpd.conf文件,添加



com2sec notConfigUser 127.0.0.1 public
access notConfigGroup "" any noauth exact all none none

 

重启snmpd



sudo /etc/init.d/snmpd restart

创建一个目录用于放置cacti程序
我放在/sites/cacti/下了
然后把cacti下载过来


sudo wget http://www.cacti.net/downloads/cacti-0.8.7g.tar.gz

然后解压

然后,创建mysql,数据库名cacti_db,创建一个用户并赋予权限。

登陆mysql



mysql -u root -p

输入密码,然后在mysql 命令行中输入



use cacti_db;

source /sites/cacti/cacti.sql;

导入数据库。

编辑/sites/cacti/include/config.php中的数据库链接信息

然后配好apache 的虚拟主机或者虚拟目录就可以访问了

domain.com/cacti/install/

默认的一般不需修改,然后就可以登陆cacti了,默认用户名 密码 admin/admin

 

252010
 

07/27Update:26日晚上新的域名再次挂掉。终于找到了原因,因为新域名正在备*案,被那个叫做未*备*案域*名*过*滤*系*统给拦截掉了。好吧,老老实实备案去。

这件血案真的是不堪回首,整整花了我们5天时间,导致了项目严重延期。

7月16日。晚上发现服务器上有个网站经常性出现了打不开的情况,查看了cacti,服务器的负载和网络都非常正常,调高了php的timeout,以为没多少问题了。事实是自己刷新也没问题了。

7月17日,问题大爆发了,服务器上另外一个网站也大规模出现了此问题,但非常奇怪的是,还有两个网站是没问题的。从此拉开了纠结的5天难熬的时间的序幕。服务器后端是使用apache的,然后采用nginx做反向代理。调高了nginx的缓存和timeout,都基本无效。但是非常奇怪的是,使用相同配置的另外两个网站是一点问题都没,啥都正常。

查看了日志,nginx中大量出现499错误。google了一下,是“client has closed connection”的nginx自定义错误。但很奇怪的是,使用apache的端口去访问却是一切正常,因此,初步判定是nginx的问题,好吧,既然是nginx问题,那就研究这玩意儿,调配置、换Development版本的nginx都无效,陷入无头绪状态。有点怀疑是域名问题了,此时用hosts绑定了一个域名上去,刷刷是正常的。

7月18日,绝对废掉nginx,直接用apache上,刚开始好好的,后来发现又不行了。日志中status 是200 ,但返回的是0字节。这个就纠结了。根据这个可能有人会问了,是不是因为我代码的问题,其实我判断不是。因为使用如下代码都经常性地刷不出来

<?php
 echo "hi";
 sleep(3);
 echo "dada";
 ?>

非常纠结。

7月19日,此时有点怀疑是PHP的问题,但排查了之后发现不是。换上nginx+fastcgi同样的问题。还好,公司里还有一台服务器。装上了Ubuntu以及其他必须的软件,在局域网内怎么刷都没有问题。

7月20日,把公司里的服务器上架到机房,发现老域名刚开始好好的,但一下子又老问题重现了,整套环境都换了,因此肯定不是我们的问题了。域名是godaddy上注册了,dns转换是用dnspod的。很有可能是DNSPOD问题,也很有可能是域名被XXX盯上了(事实证明不是,因为被盯上的话是被重置)。

7月21日,换了新域名后,一切正常的。到今天为止,一切正常。

其实到今天还是不思其解。。。

莫非真的是域名问题,还是DNSPOD引起的???

话说nginx+fastcgi真是好用,性能杠杠的!