分享

写回答

发帖

[教程] (原创)用数据分析Godaddy和HostMonster的Linux服务器负载

GoDaddy GoDaddy 40541 人阅读 | 22 人回复

发表于 2010-4-27 15:33:12 | 显示全部楼层 |阅读模式

(原创)用数据分析Godaddy和HostMonster的Linux服务器负载

闲来无事,想测试和比较一下Godaddy的Linux服务器和HostMonster服务器的负载,看看到底是谁在超售。

我这里用的是一台Godaddy域名付送的免费Linux空间(和经济型配置一样)和一台HostMonster服务器。测试环境如下:
  1. Godaddy:     [4 Core Xeon 3.00GHz CPU] - [6G Memory] - [Apache PHP5]
  2. HostMonster: [8 Core Xeon 2.00GHz CPU] - [8G Memory] - [Apache PHP5]
复制代码
然后写了个PHP脚本来获取服务器每分钟的系统负载,代码如下:

<?php

// Linux/Unix Load Average Logger
// Copyright (C) 2010 Goldstein
// Your mom would be gangbanged if you remove this copyright declaration.
// HostMonster: /usr/bin/php -q /home/USERNAME/public_html/loadavg/loadavg.php
// Godaddy:     /usr/bin/wget http://www.yoursite.com/loadavg/loadavg.php

// Set timezone to this phucking country
date_default_timezone_set('Asia/Shanghai');
$nowt = date('Y-m-d-H:i');
$nowd = date('Ymd');
$data = 'loadavg'.$nowd.'.txt';

// Get the sh*t now
exec('cat /proc/loadavg', $loadavg);

// Just get the average of current minute.
$avg = $loadavg[0];
$pos = strpos($avg, ' ');
$load = substr($avg, 0, $pos);

// Save the sh*t
$fdata = @fopen($data, 'a+');
@
flock($fdata, 2);
@
fwrite($fdata, $nowt.' '.$load."\n");
@
fclose($fdata);

?>


具体方法是读取Linux的/proc/loadavg,解析得到的字符串获取负载。loadavg得到的负载其实有3个,分别是前1分钟,前5分钟,前15分钟,在这里我们只需要取前1分钟的负载,后面的舍弃不要。

然后用Cron来定时运行这个PHP脚本,HostMonster很简单,直接用CPanel中的Cron,设定为每分钟运行一次,即时间全部都是*号。然后填命令,具体命令为:
  1. /usr/bin/php -q /home/USERNAME/public_html/tests/loadavg.php
复制代码
这里USERNAME是你的登录账户。

Godaddy的控制面板也有Cron功能,只是不完美,最频繁也只能设置为每5分钟运行一次,不知道是不是Godaddy故意不让用户频繁使用Cron来调用程序以免服务器过载,这样给我们造成了一些不便。

你当然可以取前5分钟的平均负载,然后设置为每5分钟运行一次(需要设置12个Cron Job,晕倒)。我这里偷懒,直接用HostMonster的Cron使用wget来远程运行Godaddy服务器上的PHP脚本,命令如下:
  1. /usr/bin/wget http://www.yoursite.com/tests/loadavg.php
复制代码
到此全部设置完毕。

如果运行成功,loadavg.php脚本目录下会按照日期自动生成诸如loadavg20100427.txt这样的文件,格式如下:
  1. 2010-04-27-01:12 3.02
  2. 2010-04-27-01:13 2.79
  3. 2010-04-27-01:14 2.74
复制代码
剩下的事情就是等1周或者一个月后,把日志文件下载下来分析。你自己写程序分析或者用Excel表格分析都可以,算算平均负载是多少,最高负载是多少,出现在什么时候。这样你大致可以了解自己这台服务器的负载情况及负载是否随着时间而有规律的变化。

我看了下这2台服务器上的域名数量大致相同(独立IP除外,共享IP上挂的域名差不多都在180左右),具体负载情况是Godaddy要好于HostMonster。

Godaddy负载基本在6以下,而HostMonster有时达到了40多。4核CPU正常负载应该在4以下,而8核正常负载应该在8以下,当然此值仅供参考,每台服务器都是不同的,需要实际测试靠数据来说话。

如果版主觉得不错,请加精华并赐金币若干,呵呵。

中国的一大特色就是喜好剽窃和山寨,文章被抄袭在天朝自然也见怪不怪,不过我还是要衷心地向抄袭者道一声:

抄袭死全家!

附上我的数据片段:

[Godaddy]

2010-04-27-01:19 3.11
2010-04-27-01:20 3.24
2010-04-27-01:21 3.79
2010-04-27-01:22 3.57
2010-04-27-01:23 3.16
2010-04-27-01:24 3.03
2010-04-27-01:25 3.00
2010-04-27-01:26 3.12
2010-04-27-01:27 2.85
2010-04-27-01:28 2.80
2010-04-27-01:29 3.05
2010-04-27-01:30 3.09
2010-04-27-01:31 3.27
2010-04-27-01:32 3.05
2010-04-27-01:33 2.93
2010-04-27-01:34 2.87
2010-04-27-01:35 2.64
2010-04-27-01:36 2.79
2010-04-27-01:37 2.75
2010-04-27-01:38 2.54
2010-04-27-01:39 2.48
2010-04-27-01:40 2.44
2010-04-27-01:41 2.28
2010-04-27-01:42 2.30
2010-04-27-01:43 2.23
2010-04-27-01:44 2.42
2010-04-27-01:45 2.60
2010-04-27-01:46 2.74
2010-04-27-01:47 2.82
2010-04-27-01:48 2.83
2010-04-27-01:49 2.73
2010-04-27-01:50 2.69
2010-04-27-01:51 2.62
2010-04-27-01:52 2.47
2010-04-27-01:53 2.48
2010-04-27-01:54 2.68
2010-04-27-01:55 2.57
2010-04-27-01:56 2.49
2010-04-27-01:57 2.44
2010-04-27-01:58 2.77
2010-04-27-01:59 3.01
2010-04-27-02:00 2.97
2010-04-27-02:01 3.17
2010-04-27-02:02 3.08
2010-04-27-02:03 2.80
2010-04-27-02:04 3.37
2010-04-27-02:05 3.26
2010-04-27-02:06 3.66
2010-04-27-02:07 3.56
2010-04-27-02:08 3.94
2010-04-27-02:09 4.14
2010-04-27-02:10 4.35
2010-04-27-02:11 5.05
2010-04-27-02:12 5.39
2010-04-27-02:13 5.65
2010-04-27-02:14 5.39
2010-04-27-02:15 4.84
2010-04-27-02:16 4.52
2010-04-27-02:17 4.87
2010-04-27-02:18 5.61

[HostMonster]

2010-04-26-20:30 0.60
2010-04-26-20:31 2.83
2010-04-26-20:32 1.34
2010-04-26-20:33 0.98
2010-04-26-20:34 0.64
2010-04-26-20:35 0.67
2010-04-26-20:36 0.72
2010-04-26-20:37 0.62
2010-04-26-20:38 0.52
2010-04-26-20:39 0.78
2010-04-26-20:40 0.98
2010-04-26-20:41 0.88
2010-04-26-20:42 1.95
2010-04-26-20:43 4.00
2010-04-26-20:44 4.34
2010-04-26-20:45 2.52
2010-04-26-20:46 1.36
2010-04-26-20:47 1.17
2010-04-26-20:52 28.25
2010-04-26-20:53 39.41
2010-04-26-20:54 33.96
2010-04-26-20:55 29.61
2010-04-26-20:56 41.21
2010-04-26-20:57 37.21
2010-04-26-20:58 33.99
2010-04-26-20:59 18.07
2010-04-26-21:00 7.81
2010-04-26-21:01 7.62
2010-04-26-21:02 5.78
2010-04-26-21:03 4.12
2010-04-26-21:04 2.04
2010-04-26-21:05 1.96
2010-04-26-21:06 1.87
2010-04-26-21:07 2.16
2010-04-26-21:08 4.41
2010-04-26-21:09 2.62
2010-04-26-21:10 5.64
2010-04-26-21:11 3.56
2010-04-26-21:12 2.54
2010-04-26-21:13 1.78
2010-04-26-21:14 4.76
2010-04-26-21:15 3.61
2010-04-26-21:16 4.79
2010-04-26-21:17 3.49
2010-04-26-21:18 2.04
2010-04-26-21:19 1.36

[ 本帖最后由 goldstein 于 2010-4-27 03:54 PM 编辑 ]
shot.gif

评分

参与人数 1金币 +10 银币 +10 收起 理由
add.c + 10 + 10 原创内容

查看全部评分

回答|共 22 个

goldstein

发表于 2010-4-27 15:47:09 | 显示全部楼层

大家可以测试下自己服务器的负载,我1个月后回来反馈下数据,上面的程序才跑了2天,样本太小了点,呵呵。

另外此程序可以用来监视服务器的Uptime,如果Down机了,自然Log文件上会少一段时间的数据。

add.c

发表于 2010-4-27 15:48:31 | 显示全部楼层

Goldstein出来的都是精品啊

ppower

发表于 2010-4-27 16:26:44 | 显示全部楼层

大家都来顶吧,对大家都好

goldstein

发表于 2010-4-27 16:48:56 | 显示全部楼层

原帖由 add.c 于 2010-4-27 15:48 发表
Goldstein出来的都是精品啊


多谢版主夸奖。  

用这个脚本可以看看哪些主机商超售,一抓一个准,呵呵。

抛砖引玉

发表于 2010-4-27 17:09:45 | 显示全部楼层

技术贴我支持

woodwood

发表于 2010-4-27 20:47:03 | 显示全部楼层

收藏!!!

goldstein

发表于 2010-4-29 10:25:24 | 显示全部楼层

回复 9# 的帖子

Godaddy's Unlimited Plan, Grid Hosting or VPS

goldstein

发表于 2010-4-29 11:28:35 | 显示全部楼层

还被我抓住一次重启,呵呵。

6个监控网站中有2个报告了有宕机,开始还不太相信,以为是网络暂时无法访问等问题。然后我仔细看了下系统负载日志的具体时间才发现:

2010-04-26-20:46 1.36
2010-04-26-20:47 1.17   <--- 这里数据中断了4分钟
2010-04-26-20:52 28.25
2010-04-26-20:53 39.41
2010-04-26-20:54 33.96
2010-04-26-20:55 29.61
2010-04-26-20:56 41.21
2010-04-26-20:57 37.21
2010-04-26-20:58 33.99
2010-04-26-20:59 18.07
2010-04-26-21:00 7.81
2010-04-26-21:01 7.62
2010-04-26-21:02 5.78
2010-04-26-21:03 4.12
2010-04-26-21:04 2.04
2010-04-26-21:05 1.96
2010-04-26-21:06 1.87

在2010-04-26-20:47有4分钟中断,之后几分钟负载较高,应该是重启后大量加载程序。

然后登录SSH看了下管理员的活动,果然发现这个时间root账号进行了重启。

goldstein

发表于 2010-5-11 12:05:32 | 显示全部楼层

Update:

为了避免产生大量垃圾文件,可以用Cron这样调用Godaddy账户里的loadavg.php
  1. /usr/bin/wget http://www.yoursite.com/tests/loadavg.php -O -
复制代码
生成的大量垃圾文件可以用此命令删除:
  1. rm -f loadavg.php.*
复制代码

评分

参与人数 1威望 +3 金币 +5 银币 +5 收起 理由
add.c + 3 + 5 + 5 原创内容

查看全部评分

您需要登录后才可以回帖 登录 | 注册

本版积分规则