3.6 动态站点的运行维护
网站部署上线以后,并没有一劳永逸万事大吉,让网站正常运行,并进行常规性的维护,才是工作的重点。网站的运行维护,归纳起来大致包括:状态查看及监控、故障处理、系统容量扩展、数据备份/恢复/站点迁移等几部分。
3.6.1 状态查看、监控
状态查看一般间隙性地手工进行,而监控则是经常性的由监控工具来进行,当监控系统告警时,也需要先登录系统,以手工的方式了解系统的运行状态,从而排除故障所在。
状态查看和监控的主要目的是了解系统当前的运行状态,做为称职的系统管理员,做到心中有底,才可能随机应变,从容而快速地处理各种故障或问题。
动态网站的状态查看或监控主要包括系统资源耗用情况以及服务的运行情况。
1、 系统资源耗用:
(1) 系统负载和磁盘I/O。
(2) 进程的总数,其中httpd进程数大致是多少?
(3) Tcp连接数,TIME_WAIT等其它指标。
(4) 磁盘空间的使用。
2、 服务的运行情况:
(1) 用户能否访问网站?这是最直观的服务运行状态表现形式。
(2) 用tail –f 命令滚动查看apache访问日志和apache错误日志,进一步了解apache的运行情况,必要时可以自己在浏览器里手动刷新一下页面,看该次访问是否被记录到apache的访问日志。
(3) 查看系统日志/var/log/messages,看系统是否产生异常或者是否有疑似影响 web运行的输出项。
(4) 查看服务器与mysql数据库的连接情况。
通过了解上述列出的条目,基本上可以判断一个站点是否处于正常的运行状态。如果能够多花些时间,抽样记录某些指标,形成历史记录,这将对以后的运行维护带来极大的好处。
3.6.2 故障处理
Php类型的动态网站的一般故障可能有:服务不能启动、运行中不响应用户请求、其他类型的故障等。
服务不能启动可能的原因包括:
1、 apache配置文件错误。如书写错误、漏写。
2、 动态模块libphp5_mod未能正确的编译。
3、 网站目录权限未正确设置。
4、 与其他网络服务的监听端口冲突。
运行中不能响应用户请求的主要原因大致有:
1、 系统负载太高,资源耗尽。
2、 Apache配置文件某些参数设定值不合理,如最大连接数默认为250,对于繁忙的网站,可能需要调整。
3、 临时启用防火墙。
4、 后台数据库故障。
其他类型故障大致包括:
1、 系统崩溃。
2、 文件系统损坏。
3、 系统文件所在的磁盘分区空间耗尽,主要是根分区(/)、/usr分区、/var分区。
4、 网站程序使用共享文件系统,如nfs服务失效。
5、 负载均衡的直接路由模式DR下,apache的监听地址设置不是127.0.0.1。
在了解故障的类型以及引起这些故障的可能原因之后,我们就能根据具体的现象对症下药。对于apache配置类的错误,我们可以执行apachectl –t进行语法检查。对于资源耗尽引起的故障,可以通过查看系统负载、tcp状态、系统日志等了解具体的原因。而对于其他类型故障的处理,则可按上述所列的原因逐个排查。当然这里所列的条目并没有包括程序员更改程序导致故障这个原因,如果在排查故障时,多与程序员协作,对快速解决问题很有帮助。
Java类型网站的故障类型与处理大致与php类型的相似,因此这里只列举不同的那部分内容供大家参考:
1、 系统环境变量未设置或者设置错误,这将引起tomcat不能正常启动。
2、 Apache设定的网站根文档与tomcat配置文件设定的根文档路径不一致。如果是多个web虚拟机,一定要仔细核对httpd.conf与server.xml的站点根文档路径设定。
3、 Java运行中一直不能释放内存资源。
为了随时掌握动态网站的运行情况,最好使用监控平台对其进行全天候监视。这样,即便是在睡梦中出现故障,系统管理员也能在第一时间得到故障通知。而设计良好的监控策略,则能根据报警信息轻而易举地知道故障的大致原因。
3.6.3 数据备份/恢复/站点迁移
动态网站最重要的数据是数据库数据,其次是配置文件和网站程序文件(如程序员写的php文件)。数据库的备份使用特殊的备份方法,具体参加“第9章”相关章节;配置文件和网站程序文件,则采取复制副本或增量备份的方式进行备份。实际开发环境下,有不少开发团队使用svn这样的工具保留程序文件。
网站数据恢复是数据备份的逆向工程。理论上,我们追求数据的完整性,但实际上可能做不到数据一个不丢,特别是数据库数据。给自己一个台阶下:有数据总比完全没数据强、尽量保证最多的数据量。
站点迁移根重新部署一个环境差不多,而且还要加上复制文件和导入数据库数据这样的工作量,数据准备好以后,还需要对其进行验证,因此站点迁移比初建一个网站还费时间和精力。如果使用的系统环境与需要迁移站点(这里暂且称源站点)的系统环境一致,那么可以直接从源站点复制整个需要的目录;如果不是,建议使用本章“ 3.4.4 ”节介绍的自动安装方法减少部署时间和降低出错几率。