Notes: 运维

最近这一周来一直和运维打交道,原因是服务器所在的机房网络不稳定,导致需要进行各种网络检测,测试和服务器硬件维护。

说来负责的这个项目的网络情况比较“被”,先是遇到断电维护,其次是南北网络互通问题,再是IP所在路由器故障,到现在的网络不稳定。总之是大面上遇到的问题都遇到了,小问题也都赶上了。

说起目前的情况也很奇怪:

1、出问题的IP,ping值不稳定,正常的时候3ms左右,出问题的时候不是请求超时就是ping值达到2000多ms,故障发生间隙也是几秒,几分,到几十分钟不等。

2、出问题的IP所在机子,cpu,内存,网络使用等都不大,甚至凌晨压力最最小的时候也出问题。

3、为了排除硬件问题,考虑将备机上架,而可悲的是备机竟然无法上架,原因是出问题的IP到了新机子上始终无法连通外网,而机房内同网段机子却可以ping通,换其他IP也没一点儿问题。

4、为了排除备机的系统问题,重新安装了备机的操作系统,问题同样,出问题的IP始终到了备机上无法连通外网,换其他IP没问题。

5、问题反馈机房,得答复:IP没有做网卡绑定,对此问题他们暂时也没有找到原因。

到这里我们也就无能为力了,换IP或许是最直接和简单的解决办法,但是客户忍受不了了,接连出现的问题让他们对这个机房已经丧失了信心,开始寻找新机房,准备迁移。

在这几天的网络监控中,发现了一个不错的网站“监控宝”,虽然之前早就知道,但是因为之前没有使用的需求,因此也就没有在意,这次网络监测中,发现“监控宝”还是很不错的,虽然免费的账户有一定的限制,但是作为辅助的监测工具还是很有用的,尤其结合即时通知使用时。

这里分享一个使用技巧:

想更好的使用监控宝的即时通知,是要付费的,比如短信通知,但是可以通过139邮箱的短信通知做到一样的即时通知,这点就需要你设置的通知邮箱中有一个必须是139邮箱了。

我的做法:把监控宝的通知邮箱设为我常用的gmail邮箱,然后增加过滤器,只转发来自监控宝的邮件至我不常用的139邮箱,这样只要监控宝一有邮件通知,手机就会立马收到通知。

Notes: 通过logrotate进行nginx的日志轮转

看着线上项目的access.log日益增大,进行日志分析相当不便,迫切需要进行日志轮转。

网上找到了使用logrotate进行nginx日志轮转的方案,由于不需要安装任何软件,配置起来也方便,因此考虑使用这个作为轮转方案。

先copy一个配置文件:

cp /etc/logrotate.d/httpd /etc/logrotate.d/nginx

进行该文件的配置:

/usr/local/nginx/logs/*.log {
    daily
    dateext
    rotate 99
    copytruncate
    nocompress
    missingok
    notifempty
    sharedscripts
    postrotate
         /bin/kill -HUP `/bin/cat /usr/local/nginx/logs/nginx.pid`
    endscript
}

配置说明:

daily:按天来rotate
dateext:日志rotate后再后面加日期,例如:access.log轮转后会变为access.log-20110508
rotate:保留最近的几个文件
copytruncate:是指在进行轮转时会先把日志内容复制到老文件后才清除日志文件内容,可以保证日志记录的连续性。
nocompress:不压缩
missingok:当日志为空时不进行轮转
postrotate和endscript可以插入命令和脚本 执行某些操作,这里我们是平滑重启nginx,否则轮转后access.log不会再写入。

测试配置是否生效:

/usr/sbin/logrotate -f /etc/logrotate.conf

看看/usr/local/nginx/logs/下面是否有类似access.log-20110508的log生成

[10/21 周主题] – 安装和配置Nginx

马上Nginx将会应用到公司的第一个实战项目上,为了方便开发和运维人员安装和配置Nginx,整理了下面的内容。

我们的服务器全部采用CentOS,因此下面的配置也是基于CentOS来配置的。

安装流程:

cd /opt/

yum install gcc openssl-devel pcre-devel zlib-devel

wget http://nginx.org/download/nginx-0.8.38.tar.gz

wget http://github.com/gnosek/nginx-upstream-fair/tarball/master

tar –zxvf nginx-0.8.38.tar.gz

tar –zxvf gnosek-nginx-upstream-fair-2131c73.tar.gz

cd nginx-0.8.38

./configure
--with-http_stub_status_module
--add-module=/opt/gnosek-nginx-upstream-fair-2131c73

make & make install

正常一步步走下面是不会出问题的,前提确保你的服务器网络可用。

Nginx启动脚本:

继续阅读[10/21 周主题] – 安装和配置Nginx

[10/20 周主题] – GlassFish单机和多机集群的配置

GlassFish可以配置单机集群和多机集群(即普通意义上的真集群)。

单机集群和多机集群配置上大同小异,只是代理服务器不同而已,单机集群代理服务器和代理节点在一个机子上,而多机集群就是将代理服务器和代理节点分布在不同的机器上。

下面就一步步来配置GlassFish集群,我是在Linux上部署的,因此下面的部署方式是Linux下的部署方式,Windows下的差不多:

1、下载 GlassFish, 我选择的是 GlassFish Server Open Source Edition 2.1.1中的 glassfish-installer-v2.1.1-linux-ml.jar 多语言版;

Linux Platform

继续阅读[10/20 周主题] – GlassFish单机和多机集群的配置

VirtualBox VDI镜像的复制

因为工作的需要,需要在不同的软件环境下做不同的事情,虚拟机这个时候就起了很大的作用,但是正常安装虚拟机还是比较麻烦的,如果已经有一个VDI文件系统了,只要复制一个就可以了!

但是复制后不能直接使用的,VDI是携带UUID的,UUID不能重复,因此可以通过重置UUID来使用。好在VirtualBox有这方面的工具来直接使用:


VBoxManage.exe internalcommands setvdiuuid disk.vdi

这样就重置了新VDI的UUID,然后就可以把这个新VDI注册进虚拟硬盘,避免了重新安装的烦恼!

快速删除svn项目中的.svn文件

有时我们部署项目或者往外拷贝文件时,难免会直接把.svn文件一起拷贝走,下面分享Linux和Window下两种快速删除的方法:

1、Linux下

find . -type d -name ".svn"|xargs rm -rf 

2、Windows下直接通过SVN工具,这里说的是TortoiseSVN 的export功能,选择相应的项目目录,导出即可。

Nginx试用

最近Nginx比较火,也比较好奇,于是今天就试着在自己的虚拟机上装了玩玩。

教程基本上是按照网上的教程一步步走来的。

1、下载Nginx 0.7.65

2、编译,这块稍微花了点时间,主要是缺少依赖的库,一个一个去下载安装,建议初学使用可以看这里:http://wiki.nginx.org/NginxInstallOptions

我是用的是CentOS,执行下面的命令:

yum install gcc openssl-devel pcre-devel zlib-devel

3、安装完,运行就可以了!注意:apache默认也是80端口,别重了,或者暂时把Apache关掉。

4、配置 stub_status , 配置之前确定在编译时加载 http_stub_status_module, 否则你就要重新编译了!

5、配置tomcat集群,现学现用,由于我们目前大部分服务器使用的是tomcat集群。

下载 gnosek-nginx-upstream-fair-2131c73.tar

重新编译,别忘记带上 –add-module=/home/mikespook/gnosek-nginx-upstream-fair-2131c73

简单的一个Nginx+Tomcat集群就运行起来了!网上配置教程一大堆,我也就自己实践实践,如果不明白可以Google下或者百度下,不行搜狗下,可怜的Google,不,应该是可怜的中国政府!

用mysqlsla来帮助分析慢查询日志

项目做压力测试的时候难免会碰上数据库压力比预期的高,这个时候就要进行数据库和sql优化,其中一个很好的办法便是分析数据库的慢查询日志。

以前都是手动打开浏览,或者通过Mysql自带的mysqldumpslow来查看,今天分享另外一个工具:mysqlsla

hackmysql.com推出的一款MySQL的日志分析工具

整体来说, 功能非常强大. 数据报表,非常有利于分析慢查询的原因, 包括执行频率, 数据量, 查询消耗等.

格式说明如下:

总查询次数 (queries total), 去重后的sql数量 (unique)

输出报表的内容排序(sorted by)

最重大的慢sql统计信息, 包括 平均执行时间, 等待锁时间, 结果行的总数, 扫描的行总数.

Count, sql的执行次数及占总的slow log数量的百分比.

Time, 执行时间, 包括总时间, 平均时间, 最小, 最大时间, 时间占到总慢sql时间的百分比.

95% of Time, 去除最快和最慢的sql, 覆盖率占95%的sql的执行时间.

Lock Time, 等待锁的时间.

95% of Lock , 95%的慢sql等待锁时间.

Rows sent, 结果行统计数量, 包括平均, 最小, 最大数量.

Rows examined, 扫描的行数量.

Database, 属于哪个数据库

Users, 哪个用户,IP, 占到所有用户执行的sql百分比

Query abstract, 抽象后的sql语句

Query sample, sql语句

除了以上的输出, 官方还提供了很多定制化参数, 是一款不可多得的好工具.

安装和使用也非常简单
安装:

tar zxf http://hackmysql.com/scripts/mysqlsla-2.03.tar.gz
cd mysqlsla-2.03
perl Makefile.PL
make
make install

简单使用:

— Slow log: mysqlsla -lt slow slow.log

— General log: mysqlsla -lt general general.log

— Binary log: mysqlbinlog bin.log | mysqlsla -lt binary –

mysqlsla会自动判断日志类型,缺省会打印出前十条结果,可以通过类似“–top 100”的参数来修改,如果觉得每次输入麻烦,还可以建立一个配置文件“~/.mysqlsla”,在文件里写上:top=100,这样就不用每次都手动输入参数了。

智能手机操作系统

理一下手机操作系统的文章,不然囡囡时不时还得问,这是什么操作系统的啊,什么功能,好不好用啊等,然后我从头解释下。

从2003年开始接触的智能手机,玩过WM,Symbian,iPhone,Linux到现在的Blackberry,就差Palm和Android没有玩过了,Palm估计是不想玩了,下一个版本估计是Android了,呵呵!

智能手机可能使用不同的操作系统,实现的功能几乎都差不多了,但是又各有长短,下面主要简单介绍下各个手机操作系统,以及主要优缺点。

Windows Mobile OS1259246329_Windows

光看名字就知道是出自微软,Windows Mobile 系统的界面和操作都和电脑上Windows系统十分接近,对于使用者来说十分熟悉又上手。

优点:容易上手,和Windows同步很方便,Office兼容性,多媒体性能,众多的第三方软件。

缺点:因功能多,配置高而产生耗电量大、电池续航时间短、硬件采用成本高,以及较高的系统使用授权费用,还有容易崩溃价格昂贵。

Symbian OS 1259246523_Nokia N95

好多人估计知道诺基亚,但是不知道Symbian,Symbian操作系统的手机主要由诺基亚一家来做的,尽管摩托罗拉和三星等厂商也生产基于Symbian的手机产品,但都没有形成规模,只是零星的尝试而已。目前诺基亚的智能手机几乎都是基于Symbian系统的。比如S60,S40,S80,S90等,还有索爱的UIQ。

优点:具有多任务,多线程、低功耗,低内存占用等优点,非常适合于移动通讯终端设备。

缺点:各个平台之间第三方软件不兼容,对主流的媒体格式的支持性较差,所采用的硬件配置较低,缺乏厂商支持越走越远。

Linux OS 1259246488_linux

手机上Linux操作系统和我们平时用的Linux操作系统是一个系统,而且都是全免费操作系统,之前Moto和三星在这方面支持的比较多,不过现在随着Moto向Android OS的一边倒,支持的大厂商很少了。

优点:系统资源占用率较低,而且性能比较稳定。

缺点:版本混乱,开发成本高,第三方软件少,支持的厂商越来越少。

Palm OS 1259246349_Palm Treo 700w

Palm 操作系统是一个32位的嵌入式操作系统,主要用于掌上电脑。Palm OS系统是Palmsource公司开发的。采用Palm OS的掌上电脑其对硬件配置要求不高,因此,采用Palm OS的掌上电脑产品体积通常比较小巧。另外,Palm掌上电脑的电池使用时间通常是比较长的。

优点:简单易用,占用系统资源少。

缺点:功能比较单一,多媒体和通信功能较弱。

iPhone OS 1259246432_iPhone_retro_black

iPhone OS 是由苹果公司为iPhone开发的操作系统,它主要是给iPhone和iPod Touch使用,就像其基于的Mac OSX操作系统一样,基于Unix系统。

优点:简约的外观和坚固的外壳,多点触控技术发挥淋漓尽致,强大的视频、音频播放能力,玩游戏不错。

缺点:封闭的电池设计,捆绑销售价格昂贵。

Blackberry OS black

“黑莓” BlackBerry是美国市场占有率第一的智能手机,这得益于它的制造商RIM(Research in Motion)较早地进入移动市场并且开发出适应美国市场的邮件系统。

优点:安全性比较好,  强悍的商务功能,电池续航能力强。

缺点:多媒体方面非常孱弱,启动巨慢,免费的软件比较少。

Android OS android

Android OS 是近2年才推出的一个新系统,由Google开发,基于Linux内核,开源免费。

优点:与Google产品完美整合,充分发挥互联网的应用,开放,丰富的功能选择。

缺点:刚出来,各方面还不太成熟,安全和隐私方面是个大问题。

参考:

百度百科 – 智能手机操作系统:http://baike.baidu.com/view/1047304.htm

网易 – 智能手机操作系统谁主沉浮?: http://tech.163.com/special/00091N8B/analyse024.html