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
312011
 

有时候复制了一个svn库中的目录到其他svn库中,原来的信息也被带过来了(当然可以用export),目录比较多的情况下,手动删除肯定不方面(况且默认还隐藏了.svn – -),其实很简单,使用rm和find命令很快解决问题



cd /some/of/your/folders/

rm -rf `find . -type d -name .svn`

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真是好用,性能杠杠的!

312010
 

上周四下午开始,突然发生了这样的情况,在Discuz中无法下载大文件,大约大于100K以上的文件都无法下载,下载到30~70K的时候就不动了。修改了attachments.php中的几个值都无效。很纳闷,写了PHP文件测试,也同样发现了这样的情况,于是肯定不是Discuz的问题。
Google一下,根据建议修改了PHP的几个值,也无效,顿时内牛满面。
然后便排查apache的设置,又修改,仍然无效。。。
WW了一下明城同学 ,果然是牛人,建议我查看一下nginx的设置,因为服务器是nginx反向代理到apache的。修改了配置文件,加大了以下的值

proxy_buffer_size          16k;
proxy_buffers              16 128k;
proxy_busy_buffers_size    256k;
proxy_temp_file_write_size 256k;

完美解决此问题,同时没有其他后遗症

 Posted by at 11:05 上午
十二 222009
 

rsync是linux下的一个网站同步的超强工具,这个不多介绍,搜索一下,一堆资料。

今天遇到了一个很诡异的问题,用户授权老是有问题。情况是这样的:

写好了/etc/rsyncd.conf里的模块
其中有这么一段:

[testsite]
path = /home/dada/sites/testsite/
ignore errors
read only = true
list = true
auth users = dada
secrets file = /etc/backserver.pas

/etc/backserver.pas是授权用户的配置文件。内容如下

dada:123456
在备份主机上进行文件同步
sudo rsync -vzrtopg –delete –exclude –progress [email protected]:: testsite /home/dada/backupsites/

输入正确的密码仍然提示未授权。

查看了日志,也没发现特别特殊的信息。

后来终于查到了这个:

http://www.sjle8.cn/redirect.php?fid=47&tid=4666&goto=nextnewset

果真是因为这个问题

sudo chmod -c 600 /etc/backserver.pas

解决问题!

 Posted by at 9:08 下午