10hosting:$9.95 512MB OpenVZ VPS

x10hosting

10hosting 除了 VPS 业务外还有收费和 free 的 hosting 业务。VPSee 注册了一个免费的 web hosting,网速还挺快的,注册不算太麻烦。VPS 支持自由 reload,不用麻烦客服。http://forums.x10hosting.com/ 论坛上帖子很多,社区很活跃。没有公司介绍信息,也看不到服务器硬件、网络等信息。VPS 配置如下:

服务器在 TelX, Atlanta
LXAdmin 控制面板
Fair Share CPU (600 MHz Guaranteed)
30GB 硬盘10GB
512MB Guaranteed RAM,1024MB Burstable RAM/128MB,354MB
500GB 带宽/200GB
9.95 美元/4.95

官方网站上没有,在 WHT 上才能找到4.95的 VPS。现在正在优惠中,9.95的 VPS 第一个月只要2.49。

如何查看进程 IO 读写情况?

Linux Kernel 2.6.20 以上的内核支持进程 IO 统计,可以用类似 iotop 这样的工具来监测每个进程对 IO 操作的情况,就像用 top 来实时查看进程内存、CPU 等占用情况那样。但是对于 2.6.20 以下的 Linux 内核版本就没那么幸运了,根据 Stack Overflow 的这篇回帖 给出的方法,VPSee 写了一个简单的 Python 脚本用来在 linux kernel < 2.6.20 下打印进程 IO 状况。

Kernel < 2.6.20

这个脚本的想法很简单,把 dmesg 的结果重定向到一个文件后再解析出来,每隔1秒钟打印一次进程 IO 读写的统计信息,执行这个脚本需要 root:

#!/usr/bin/python
# Monitoring per-process disk I/O activity
# written by http://www.vpsee.com 

import sys, os, time, signal, re

class DiskIO:
    def __init__(self, pname=None, pid=None, reads=0, writes=0):
        self.pname = pname 
        self.pid = pid
        self.reads = 0
        self.writes = 0

def main():
    argc = len(sys.argv)
    if argc != 1:
        print "usage: ./iotop"
        sys.exit(0)

    if os.getuid() != 0:
        print "must be run as root"
        sys.exit(0)

    signal.signal(signal.SIGINT, signal_handler)
    os.system('echo 1 > /proc/sys/vm/block_dump')
    print "TASK              PID       READ      WRITE"
    while True:
        os.system('dmesg -c > /tmp/diskio.log')
        l = []  
        f = open('/tmp/diskio.log', 'r')
        line = f.readline()
        while line:
            m = re.match(\
                '^(\S+)\((\d+)\): (READ|WRITE) block (\d+) on (\S+)', line)
            if m != None:
                if not l:       
                    l.append(DiskIO(m.group(1), m.group(2)))
                    line = f.readline() 
                    continue            
                found = False   
                for item in l:  
                    if item.pid == m.group(2):
                        found = True            
                        if m.group(3) == "READ":
                            item.reads = item.reads + 1 
                        elif m.group(3) == "WRITE":
                            item.writes = item.writes + 1
                if not found:   
                    l.append(DiskIO(m.group(1), m.group(2)))
            line = f.readline()
        time.sleep(1)
        for item in l:
            print "%-10s %10s %10d %10d" % \
                (item.pname, item.pid, item.reads, item.writes)

def signal_handler(signal, frame):
    os.system('echo 0 > /proc/sys/vm/block_dump')
    sys.exit(0)

if __name__=="__main__":
    main()


继续阅读 »

ZanyHost:$8 256MB OpenVZ VPS

zanyhost

ZanyHost 可以自己用控制面板重装系统,不需要提交 ticket,不过开通 VPS 需要12小时左右 setup。不 oversell,每个服务器根据内存大小 host 大概 8-12 个 VPS。ZanyHost 也提供 Xen VPS,不过价格偏高。whois 查询得知 zanyhost.com 域名是2008年12月份注册的,注册的是个人,而起只注册了1年。VPS 配置如下:

服务器在 TelX, Atlanta
vePortal 控制面板
Equal Share CPU
10GB 硬盘
256MB Guaranteed RAM
250GB 带宽
8 美元

服务器硬件和网络信息:

Quad Core Intel Q6600, 8GB RAM, 2 X 250GB HDD, 100Mbps Connection to the internet or better. Our network consists of multiple redundant layer 2 and 3 switches and routers providing load balancing and automated route switching with route optimization.

Mac 下批量修改图片尺寸

整理了一堆照片打算放到网上去,都是 3072 x 2304 大小,需要改小。网上可以搜到一堆批量修改的工具可以用,免费的只有一个叫 iResize 的工具,而且不好用,居然不能识别 JPG,只能识别 jpg 后缀。在 Mac 里能不能不借助外部工具来批量修改图片尺寸大小呢?

打开 /Applications/Automator.app,如图:
automator

1、把要改尺寸的图片全部拖到界面就会在右边出现 “Get Specifed Finder Items” 一栏;(需要修改哪些文件?)
2、在 ”Copy Finder Items” 选项里选择要把修改后的图片存在哪个地方;(把修改后的文件存到哪个地方?)
3、选择 “Photos->Scale Images”,双击 “Scale Images”,会在右边出现 “Scale Images” 选项,选择想改变的尺寸大小或者百分比,最后点击右上角的 “Run”。(开始修改)

CentOS 5 上配置 Trac 和 Git

git

VPSee 一直使用 Subversion 来管理自己和其他人的项目,甚至文档和资料也是通过 Subversion 来管理的。最近大家对 Subversion 抱怨变多,主要是因为慢,特别是 merge 速度很慢,checkout 也很慢,从本地局域网 checkout 有时候不到 20K 每秒,一直想找个机会换掉 Subversion。版本控制软件可选的不多,有名的就这么几个:CVS、Subversion、Arch、Bazaar、BitKeeper、Git。Git 是 Linus Torvalds 开发的一套版本控制系统,其初衷是用来替代 BitKeeper。经过一段时间的沉淀,现在 Git 终于开始步入主流,在开源项目里很受欢迎,Linux Kernel、Perl、Gnome、Ruby on Rails、Android、Fedora、Debian、X.org 等都是用 Git 来做版本控制的,Digg 最近也在考虑从 Subversion 移到 Git。Git 是分布式版本控制,与 Subversion 集中式控制不同,刚开始接触 Git 可能有点不适应,一旦熟悉以后就会发现 Git 特别方便,简单实用,而且速度超快。Trac 和 Subversion 组合起来很强大,通过 Git Plugin for Trac 插件 也可以把 Trac 和 Git 组合起来,而且还不需要额外的类似 Apache + mod_svn 的支持。

安装和使用 Git

安装过程很简单:

# yum install git

增加 Git 用户:

$ git config --global user.name "vpsee"
$ git config --global user.email "[email protected]"

创建一个项目目录,把所有想被版本控制的文件、目录拷贝进来:

$ mkdir myproject
$ cd myproject/


继续阅读 »

AMH Network:$6.5 256MB OpenVZ VPS

amhnetwork

AMH Network 是一家澳大利亚公司,以前一直做 share hosting 业务,网站上只有 shared 和 reseller 信息,没有 VPS。公司刚刚在德国租了服务器,开始开辟 VPS 业务,现在在 WHT 可以找到35%的 launch promotion。VPS 配置如下:

服务器在 Frankfurt, Germany
有控制面板可以 reboot, reload, shutdown
Equal Share CPU
5GB 硬盘
256MB Guaranteed RAM,384MB Burst Memory
50GB 带宽
2 IP
6.5 美元

服务器硬件和网络信息:

Intel Core2Quad Q9550 (4×2.83GHz) with 8GB DDR2 Memory

自动监测和重启 FastCGI 服务

昨天有个服务器出了点小问题,PHP FastCGI 进程无缘无故就死在那里了,造成 Nginx 不能和 FastCGI 通信,不能解析 PHP 页面,只能看到 Nginx 的 默认 HTML 页面。登录到服务器检查日志也没有找到原因,重启 FastCGI 后恢复正常。服务器上装了 monit,如果服务关闭的话会自动重启,但是这里 FastCGI 服务并没有关闭,只不过由于某种原因不能和 Nginx 通信,所以 monit 误认为 FastCGI 运行正常没有执行重启 FastCGI 的命令。

今天写了一个 Python 脚本用来后台监测 nginx 的日志,如果在日志里发现 111: Connection refused 或者 104: Connection reset by peer 等错误就 kill 掉所有 php-cgi 进程后重启服务。程序有几个地方需要说明:

1、如果不先 kill 直接运行 /etc/init.d/php-cgi restart 重启服务有时候不管用,因为这时候 php-cgi 只是驻留在内存里的死进程而而已不能执行任何命令,所以需要 kill 全部 php-cgi 进程后再启动;
2、读 nginx 的 log 文件的时候要小心,log 文件通常很大,如果用 python 的普通读文件函数会把整个文件读出来后再处理,速度很慢,也会占用大量内存,所以最好用 tail 截取文件,我们只需要分析最后部分(也是最近)的记录即可;
3、程序通过 /var/run/php_cgi.pid 来判断 PHP FastCGI 是否正在运行,通过 /var/log/nginx/error.log 来判断 Nginx/FastCGI 是否工作正常,每600秒检查一次,如果工作不正常 sleep 2秒后重启 php-cgi;
4、本程序可扩展到重启其他服务,比如通过 /var/run/lighttpd.pid 来判断 lighttpd 是否需要重启;
5、程序中 daemonize 函数来自 Python Cookbook(O’Reilly ) 一书。

程序使用

拷贝下面代码做一定修改以后保存为 checkphpcgi,增加文件可执行权限后用 root 运行程序:

# chmod +x checkphpcgi

# ./checkphpcgi
usage: ./checkphpcgi start|stop|restart

# ./checkphpcgi start

如果想要停止程序:

继续阅读 »

FazeWire:$6.5 128MB Xen VPS

fazewire

2009年11月1日更新:FazeWire 网站不能访问,VPSee 提醒不要碰这家的 VPS.

FazeWire 2年前成立的一家公司,有自己的服务器,网站上有用信息太少,都做了2年了怎么还没什么内容呢,找不到服务器、网络等信息。搜索了一下也没找到有用的评论。VPS 配置如下:

服务器在 Seattle, WA
WizardVM 控制面板
10GB 硬盘
128MB Guaranteed RAM,256MB Burst Memory
200GB 带宽
6.5 美元

现在购买头一个月有25%的优惠,优惠码可以在 WHT 上找到。

在 IBM TP600E 上运行 FreeBSD 7.1

如果非要挑个非 Mac 的话,那就只能是 Thinkpad 了,手上这台 IBM Thinkpad 600E 差不多陪了本人十年,历尽沧桑,最惨的时候可能就是拿它来垫桌子吃火锅了:),笔记本的质量能做成这样,已经服了~。新 Mac 被 LP 抢走后,少了台看信息的机器。昨天把这台不抱希望的本本拿出来点亮,居然还可以显示,光驱、硬盘可以用,除了电池以外其他基本正常,上面还跑着我 n 年前装的 FreeBSD 4.7,密码忘了进不去,重装 FreeBSD 7.1 算了。我打算做个架子把这台机器挂在办公桌旁边的墙上,当作监控用。这样抬头就可以看到各种信息,服务器断了、异常了、过载了就发警报提示。发张照片纪念一下 VPSee 的第一个10年本本:

ibm tp600e

FreeBSD 的安装过程这里就不提了,现在操作系统的安装程序都做得很傻瓜,没有什么问题。不过遇到几个硬件驱动问题需要编译内核解决。

配置内核

拷贝一个内核配置文件出来,然后在上面修改,除去不必要的 USB、不用的网卡、各类不需要的驱动,优化内核配置,最后加上 PCMCIA 网卡(3Com 3C589D)和声卡驱动:

# cp /usr/src/sys/i386/conf/GENERIC /usr/src/sys/i386/conf/TP600E
# vi /usr/src/sys/i386/conf/TP600E

# Display card support
device          agp             # support several AGP chipsets
options VESA
options SC_PIXEL_MODE
options SC_NORM_ATTR=(FG_GREEN|BG_BLACK)
options SC_NORM_REV_ATTR=(FG_YELLOW|BG_GREEN)
options SC_KERNEL_CONS_ATTR=(FG_RED|BG_BLACK)
options SC_KERNEL_CONS_REV_ATTR=(FG_BLACK|BG_RED)
device dpms # DPMS suspend & resume via VESA BIOS

# Sound card support
device          sound
device          snd_mss

# PCCARD (PCMCIA) support
# PCMCIA and cardbus bridge support
device          cbb             # cardbus (yenta) bridge
device          pccard          # PC Card (16-bit) bus
device          cardbus         # CardBus (32-bit) bus

# PCI Ethernet NICs that use the common MII bus controller code.
# NOTE: Be sure to keep the 'device miibus' line in order to use these NICs!
device          miibus          # MII bus support

# ISA Ethernet NICs.  pccard NICs included.
device          ep              # Etherlink III based cards

编译、安装内核

编译和安装内核:

# cd /usr/src

# make buildkernel KERNCONF=TP600E
# make installkernel KERNCONF=TP600E

修改 /etc/rc.conf,加入下面几行后重启系统:

# vi /etc/rc.conf

allscreens_flags="-MODE_278"
pccard_enable="YES"
ifconfig_ep0="DHCP"
hald_enable="YES"
dbus_enable="YES"

# shutdown -r now

重启后,插入 PCMCIA 网卡报错,提示:

pccard0: Card has no functions

估计是不能正确映射内存的原因,加入下面一行就应该可以了:

# vi /boot/loader.conf:

hw.cbb.start_memory="0x20000000" 

# shutdown -r now

如果重启后 dhcp 没有得到 IP 地址,手动运行:

# dhclient

启动 X

startx 启动 X 失败,看日志发现没有找到 neomagic 模块,需要安装 neomagic 驱动(机器在防火墙后面,需要先设代理,然后换个支持 http 下载的 port location,FreeBSD 默认是 ftp 的 port,如果不想每次登录都设 proxy 就把它加到 .cshrc 里面去):

# setenv HTTP_PROXY http://squid.vpsee.com:3128/

# setenv PACKAGESITE http://ftp2.de.freebsd.org/pub/FreeBSD/ports/i386/
packages-7.1-release/

# cd /usr/ports/
# pkg_add -r -v x11-drivers/xf86-video-neomagic-1.2.2_1

安装一个小巧的 X 窗口管理器 Fluxbox:

# cd /usr/ports/
# pkg_add -r -v x11-wm/fluxbox-1.1.0.1_5

# vi ~/.xinitrc
exec xterm &
exec fluxbox

升级系统

下载和安装二进制 FreeBSD base:

# freebsd-update fetch
# freebsd-update install

下载和升级 FreeBSD ports:

# portsnap fetch
# portsnap extract

AccurateHub:$5 128MB OpenVZ VPS

accuratehub

Accurate Hub Networks 一家澳大利亚公司,2008年6月创立,服务器在美国。这家公司还在网站上公布了他们的 business registration number: B2138599X,以便让购买者知道他们是一家正规公司,不是几个高中生弄个 reseller 赚点外快。Accurate Hub 也提供网站设计业务。VPS 配置如下:

服务器在 US
VePortal 控制面板
OpenVZ
10GB 硬盘
128MB Guaranteed RAM,192MB Burst Memory
100GB 带宽
5 美元

官方网站上价格吓人,上面的价格只有在 WHT 上才可以找到。服务器硬件和网络信息:

Our servers are all Intel Dual Xeon powered with a minimum of 4GB Ram and RAID redundant configurations.