5月底接到的项目,负责某公司的免费试用报名活动的网站架设,网站不是我设计的,我只需要负责翻译和修改,并设置网络环境让网站能够正常运行。改公司特地为该活动租了一台服务器,网络服务商只是把系统安装好并随便安装了基本的WEB服务就交给我们。活动是6月15日北京时间13点开始,我需要在这之前用SSH在服务器上编译安装webbench进行压力测试,服务器的系统是CentOS 5.8:

编译安装webbench

在安装webbench之前,还需要安装ctags

cd /usr/local/src
wget http://prdownloads.sourceforge.net/ctags/ctags-5.8.tar.gz
cd ctags-5.8
./configure && make && make install

安装webbench
官方网址:http://home.tiscali.cz/~cz210552/webbench_cz.html

cd /usr/local/src
wget http://home.tiscali.cz/~cz210552/distfiles/webbench-1.5.tar.gz
cd webbench-1.5
./configure && make && make install

安装好之后就可以对服务器进行压力测试了(对网站进行4000用户持续30秒压力测试):

webbench -c 4000 -t 30 http://127.0.0.1/index.php

经测试新服务器可以同时在线4000人,足够满足泰国的需要了。国内搞这个活动,有200万人参与,结果弄瘫了服务器。

安装网络服务

该活动的程序设计是,为了缓解服务器压力,使用memcache技术,将用户提交的所有报名数据缓存,每隔两分钟用以文本的格式写入硬盘,服务器用crontab每隔半小时将生成的文本数据导入数据库。

首先,我需要配置好网络服务,导入mysql数据。泰方安装的phpmyadmin居然是2.2的,如此低的版本无法导入该公司交给我的数据库sql文件,将phpmyadmin升级到3.51后问题解决。

13号晚上,紧张的网站翻译和修改工作开始(拖的真晚),做到第二天凌晨1点还有很多工作都没有完成,不得已我决定14号请假一天。14号,哼哼,超忙的一天!虽然上午将我负责的翻译和修改工作都做好了。我心里很明白,这个程序还有很多问题,我有些不理解,这难道就是曾经在国内进行过一次报名活动的程序吗,怎么像个未完成品呢。首先就是不管怎么上传测试数据,报名人数始终是1,这还是我改过的,否则是0。这肯定是memcache有问题造成的,但我对memcache不熟悉,我甚至都不知道网上的memcached和memcache有什么区别。所以,我强烈要求该公司的程序员参与到工作中来。

功夫不负有心人,下午3点,终于完善了程序,并且在他本地通过测试。我满心欢喜地将新程序上传到服务器上运行,期待看到正常的首页。结果,结果。。。连1都看不到了,一片空白,用chrome追踪js错误提示,ajax没有输出json类,php程序没有正常运行。

我问他,服务器的php版本那是5.1.6,是否低了。他说最好是5.2+。NND,我还想休息呢,好累。没办法,今天这个任务拼了命也必须完成的,因为该公司为这个活动投入了大量的广告,15号必须上线。于是我开始升级PHP(之前我曾经把服务器弄瘫痪过一次,哈哈),上帝保佑,升级PHP 5.3.10的过程还是很顺利的,但是升级之后,memcache却不能用了。

于是我花了2个小时来研究memcache,终于明白,memcached是服务端,memcache是php的一个模块,都需要安装。于是我从官方网站下载memcache的服务端和模块,编译安装,顺利启动服务(后来我在本地编译安装一直无法通过,不知道差了什么,那天的RP真好啊)。最后,就是设定计划任务了。

cd ~
vi ****-conf #新建一个计划任务配置文件,输入

*/30 * * * * php /var/www/html/****_stat.php
#设定每半小时执行一次***_stat.php
crontab -u root ****-conf #以root身份载入计划任务

其他:
crontab -l #列出計劃任務
crontab -e #編輯計劃任務

这时,已经是晚上6点了……后来修修补补折腾到晚上10点,我说:“不行了,我退了,眼皮睁不开了”所有的工作才宣告结束。

事后想起来,如果我办事不给力,不负责或者RP不好,15号的活动铁定泡汤。

15号,北京时间11:50,我在群里说,还有10分钟,活动准备上线。群里说,泰国是7时区,所以北京时间13点的时候才是泰国12点。我汗。。差点就提前上了。

13点活动准时上线了,该公司的官网是基于Joomla做的,我修改了用户进入首页会自动header到活动页面。活动进行了1个小时,突然该公司说,表单验证有问题,泰国的名称里有特殊的字符,所以无法通过从而无法提交表单,于是我用最快的速度删除了正则验证,该公司工作人员才长舒了一口气。过了两三个小时,检查mysql数据库,成功录入用户数据,活动一直顺利进行到23号结束。

喜欢这篇文章吗,不妨分享给朋友们吧!