由于自己使用GOOGLE的邮箱服务,但是ghs.google.com的IP经常被GFW,所以自己弄了一个ghs的解析服务,当IP被封的时候我会及时更新,并在这里贴出最新的地址。
2009年5月31日更新:
- 72.14.232.215
- 72.14.207.121(被封)
- 74.125.53.121(被封)
- 74.125.95.121(被封)
- 216.239.32.21
- 216.239.36.21
如果要使用的话,创建CNAME到ghs.licess.com就等同于ghs.google.com。
由于自己使用GOOGLE的邮箱服务,但是ghs.google.com的IP经常被GFW,所以自己弄了一个ghs的解析服务,当IP被封的时候我会及时更新,并在这里贴出最新的地址。
2009年5月31日更新:
如果要使用的话,创建CNAME到ghs.licess.com就等同于ghs.google.com。
两个月前在Yahoo花了1.99$注册了VPSer.Net这个域名(详情请看:http://blog.licess.com/yahoo-199-domain/ ),现在到两个月的时间了该转出了,要不下年续费30多刀,很心疼的。。。
下面记录一些过程:
1、打开 http://smallbusiness.yahoo.com/ ,点击small Business,登录服务管理,再到域名管理
点击Domain Control Panel
2、获取转移码:如果域名处于锁定状态,将无法获得转移码,所以先解锁。
点击“Edit Domain Locking”,根据提示步骤,点击确认解锁。
再点击“View your authorization code”获取转移码
2、登录 www.name.com点击页面下方的,如果没有name.com的帐号,请注册。
点击“Transfer Domain Names”,到
填写域名,及转移码信息,点击submit,根据提示付款即可。
3、付款完成,查看你注册yahoo邮箱里的邮件,查看一封为:Name.com - Transfer Confirmation (Transfer ID:×××××))的邮件,里面有一个
“To PROCEED with the transfer, please click on the following URL:
https://www.name.com/transfers_in/accept.php?key=×××××××××××××××”
点击链接确认即可。
如果不进行确认,5天后name.com会自动取消本次转移操作。
整个域名转移过程需要4、5天的时间。
注意:完成转移后,要到yahoo的控制面板取消掉了这个域名(cancel plan),要不然yahoo以后还会继续自动扣款。
更新:2009年5月25日
今天登陆Name.com查看,已经转移成功,也不发个邮件提醒一下。
一、uptime
Uptime命令的显示结果包括服务器已经运行了多长时间,有多少登陆用户和对服务器性能的总体评估(load average)。load average值分别记录了上个1分钟,5分钟和15分钟间隔的负载情况,load average不是一个百分比,而是在队列中等待执行的进程的数量。如果进程要求CPU时间被阻塞(意味着CPU没有时间处理它),load average值将增加。另一方面,如果每个进程都可以立刻得到访问CPU的时间,这个值将减少。
UP kernel下的load average的最佳值是1,这说明每个进程都可以立刻被CPU处理,当然,更低不会有问题,只说明浪费了一部分的资源。但在不同的系统间这个值也是不同的,例如一个单CPU的工作站,load average为1或者2都是可以接受的,而在一个多CPU的系统中这个值应除以物理CPU的个数,假设CPU个数为4,而load average为8或者10,那结果也是在2多点而已。
你可以使用uptime判断一个性能问题是出现在服务器上还是网络上。例如,如果一个网络应用运行性能不理想,运行uptime检查系统负载是否比较高,如果不是这个问题更可能出现在你的网络上。
二、top
Top命令显示了实际CPU使用情况,默认情况下,它显示了服务器上占用CPU的任务信息并且每5秒钟刷新一次。你可以通过多种方式分类它们,包括PID、时间和内存使用情况。
下面是输出值的介绍:
进程的优先级和nice级别
进程优先级是一个决定进程被CPU执行优先顺序的参数,内核会根据需要调整这个值。Nice值是一个对优先权的限制。进程优先级的值不能低于nice值。(nice值越低优先级越高)
进程优先级是无法去手动改变的,只有通过改变nice值去间接的调整进程优先级。如果一个进程运行的太慢了,你可以通过指定一个较低的nice值去为它分配更多的CPU资源。当然,这意味着其他的一些进程将被分配更少的CPU资源,运行更慢一些。Linux支持nice值的范围是19(低优先级)到-20(高优先级),默认的值是0。如果需要改变一个进程的nice值为负数(高优先级),必须使用su命令登陆到root用户。下面是一些调整nice值的命令示例,
以nice值-5开始程序xyz
改变已经运行的程序的nice值
将pid为2500的进程的nice值改为10
僵尸进程
当一个进程被结束,在它结束之前通常需要用一些时间去完成所有的任务(比如关闭打开的文件),在一个很短的时间里,这个进程的状态为僵尸状态。在进程完成所有关闭任务之后,会向父进程提交它关闭的信息。有些情况下,一个僵尸进程不能关闭它自己,这时这个进程状态就为z(zombie)。不能使用kill命令杀死僵尸进程,因为它已经标志为“dead”。如果你无法摆脱一个僵尸进程,你可以杀死它的父进程,这个僵尸进程也就消失了。然而,如果父进程是init进程,你不能杀死init进程,因为init是一个重要的系统进程,这种情况下你只能通过一次重新启动服务器来摆脱僵尸进程。也必须分析应用为什么会导致僵死?
三、iostat
iostat是sysstat包的一部分。Iostat显示自系统启动后的平均CPU时间(与uptime类似),它也可以显示磁盘子系统的使用情况,iostat可以用来监测CPU利用率和磁盘利用率。
CPU利用率分四个部分:
磁盘占用率有下面几个部分:
块的大小
块可能为不同的容量。块的大小一般为1024、2048、4048byte。可通过tune2fs或dumpe2fs获得:
四、Vmstat
Vmstat命令提供了对进程、内存、页面I/O块和CPU等信息的监控,vmstat可以显示检测结果的平均值或者取样值,取样模式可以提供一个取样时间段内不同频率的监测结果。
注:在取样模式中需要考虑在数据收集中可能出现的误差,将取样频率设为比较低的值可以尽可能的减小误差的影响。
下面介绍一下各列的含义
Vmstat命令提供了大量的附加参数,下面列举几个十分有用的参数:
五、ps和pstree
ps和pstree命令是系统分析最常用的基本命令,ps命令提供了一个正在运行的进程的列表,列出进程的数量取决于命令所附加的参数。例如ps –A 命令列出所有进程和它们相应的进程ID(PID),进程的PID是使用其他一些工具之前所必须了解的,例如pmap或者renice。
在运行java应用的系统上,ps –A 命令的输出很容易就会超过屏幕的显示范围,这样就很难得到所有进程的完整信息。这时,使用pstree命令可以以树状结构来显示所有的进程信息并且可以整合子进程的信息。Pstree命令对分析进程的来源十分有用。
六、Numastat
随着NUMA架构的不断发展,例如eServer xSeries 445及其后续产品eServer xSeries 460,现在NUMA架构已经成为了企业级数据中心的主流。然而,NUMA架构在性能调优方面面临了新的挑战,例如内存分配的问题在NUMA系统之前并没人感兴趣,而Numastat命令提供了一个监测NUMA架构的工具。Numastat命令提供了本地内存与远程内存使用情况的对比和各个节点的内存使用情况。Numa_miss列显示分配失败的本地内存,numa_foreign列显示分配远程内存(访问速度慢)信息,过多的调用远程内存将增加系统的延迟从而影响整个系统的性能。使运行在一个节点上的进程都访问本地内存将极大的改善系统的性能。
※我使用的系统不支持NUMA架构,此图为原文档截图。
七、sar
sar程序也是sysstat安装包的一部分。sar命令用于收集、报告和保存系统的信息。Sar命令由三个应用组成:sar,用与显示数据;sa1和sa2,用于收集和存储数据。默认情况下,系统会在crontab中加入自动收集和分析的操作:
sar命令所生成的数据保存在/var/log/sa/目录下,数据按照时间保存,可以根据时间来查询相应的性能数据。
你也可以使用sar在命令行下得到一个实时的执行结果,收集的数据可以包括CPU利用率、内存页面、网络I/O等等。下面的命令表示用sar执行5次,间隔时间为3秒:
八、free
free命令显示系统的所有内存的使用情况,包括空闲内存、被使用的内存和交换内存空间。Free命令显示也包括一些内核使用的缓存和缓冲区的信息。
当使用free命令的时候,需要记住linux的内存结构和虚拟内存的管理方法,比如空闲内存数量的限制,还有swap空间的使用并不标志一个内存瓶颈的出现。
Free命令有用的参数:
九、Pmap
pmap命令显示一个或者多个进程使用内存的数量,你可以用这个工具来确定服务器上哪个进程占用了过多的内存从而导致内存瓶颈。
十、Strace
strace截取和记录进程的系统调用信息,还包括进程接受的命令信号。这是一个有用的诊断和调试工具,系统管理员可以通过strace来解决程序上的问题。
命令格式,需要指定需要监测的进程ID。这个多为开发人员使用。
十一、ulimit
可以通过ulimit来控制系统资源的使用。请看以前的日志:使用ulimit和proc去调整系统参数
十二、Mpstat
mpstat命令也是sysstat包的一部分。Mpstat命令用于监测一个多CPU系统中每个可用CPU的情况。Mpstat命令可以显示每个CPU或者所有CPU的运行情况,同时也可以像vmstat命令那样使用参数进行一定频率的采样结果的监测。
十三、附录
本文截取和修改自IBM的红皮书Tuning Red Hat Enterprise Linux on IBM eServer xSeries Servers。
1、判断手机用户
一般通过User-Agent来判断,从网上抄一抄,那些列出的都不错,我的配置里加上了Java、curl和Wget,方便调试和其它内部项目的抓取。
因为现在很多手机网关没有发送User-Agent,所以大部分手机发送的User-Agent到了网关就被过滤掉了,相当于是空值。经过抽样调查,User-Agent为空且为手机用户比例比较大。有部分User-Agent为空的是一些蜘蛛或垃圾程序的造访,这些垃圾流量并不那么重要。希望手机网关将来有相应的标准,不要发送空的User-Agent,就是发送一个字母也好啊。
如果应用有一个独立域名,也未必要做手机判断。譬如新浪有独立域名且深入人心,那它做不做跳转无关紧要。
nginx配置用穷举方式罗列各类手机User-Agent并把空User-Agent也转到手机应用里,非这些情况,则跳到帮助页面。
set $ismob 0;
if ( $http_user_agent ~ "^((.*MIDP.*)|(.*WAP.*)|(.*UP.Browser.*)|(.*Smartphone.*)|(.*Obigo.*)|(.*Mobile.*)|(.*AU.Browser.*)|(.*wxd.Mms.*)|(.*WxdB.Browser.*)|(.*CLDC.*)|(.*UP.Link.*)|(.*KM.Browser.*)|(.*UCWEB.*)|(.*SEMC\-Browser.*)|(.*Mini.*)|(.*Symbian.*)|(.*Palm.*)|(.*Nokia.*)|(.*Panasonic.*)|(.*MOT\-.*)|(.*SonyEricsson.*)|(.*NEC\-.*)|(.*Alcatel.*)|(.*Ericsson.*)|(.*BENQ.*)|(.*BenQ.*)|(.*Amoisonic.*)|(.*Amoi\-.*)|(.*Capitel.*)|(.*PHILIPS.*)|(.*SAMSUNG.*)|(.*Lenovo.*)|(.*Mitsu.*)|(.*Motorola.*)|(.*SHARP.*)|(.*WAPPER.*)|(.*LG\-.*)|(.*LG/.*)|(.*EG900.*)|(.*CECT.*)|(.*Compal.*)|(.*kejian.*)|(.*Bird.*)|(.*BIRD.*)|(.*G900/V1.0.*)|(.*Arima.*)|(.*CTL.*)|(.*TDG.*)|(.*Daxian.*)|(.*DAXIAN.*)|(.*DBTEL.*)|(.*Eastcom.*)|(.*EASTCOM.*)|(.*PANTECH.*)|(.*Dopod.*)|(.*Haier.*)|(.*HAIER.*)|(.*KONKA.*)|(.*KEJIAN.*)|(.*LENOVO.*)|(.*Soutec.*)|(.*SOUTEC.*)|(.*SAGEM.*)|(.*SEC\-.*)|(.*SED\-.*)|(.*EMOL\-.*)|(.*INNO55.*)|(.*ZTE.*)|(.*iPhone.*)|(.*Android.*)|(.*Windows CE.*)|(Wget.*)|(Java.*)|(curl.*)|(Opera.*))$" )
{
set $ismob 1;
proxy_pass http://m.sudone.com;
}
if ( $http_user_agent ~ ^$ )
{
set $ismob 1;
proxy_pass http://m.sudone.com;
}
if ( $ismob = 0 )
{
rewrite "^.*$" http://help.m.sudone.com/ permanent;
}
2、Content-Type
手机浏览器和普通电脑访问页面有所不同,绝大多数手机不支持text/html这种Content-Type格式。在web服务方面,除了要做出合适手机浏览的页面,另外一个重要的事情就是要把Content-Type弄对了。一般手机使用的是text/vnd.wap.wml和application/xhtml+xml,听说text/vnd.wap.wml是老式手机专用,application/xhtml+xml是3g标准指定的Content-Type,另外charset需要指明为UTF-8。
所以Content-Type就应像如下:
Content-Type: application/xhtml+xml; charset=UTF-8
这样就对了。
对于动态页面,Content-Type可以在程序里设定。
譬如php
header("Content-Type: application/xhtml+xml; charset=UTF-8")
jsp的话,把顶头的page改了就好
动态程序里的设定,到了nginx上默认会继承,所以不用太多考虑。nginx要做的一个是静态页面,另一个是302跳转。
静态页面的Content-Type改起来不麻烦,修改mime.types:
application/xhtml+xml html htm shtml;
application/xhtml+xml xml;
把需要的扩展名对应的类型改一改就好了。然后在nginx.conf里指定charset UTF-8。
麻烦的是301和302跳转,nginx中使用rewrite的redirect和permanent跳转的时候,Content-Type怎么改都会是text/html,使用add_header,Content-Type变成了两行,没能达成目的。用代理到动态程序固然行,但性能和稳定性又成了问题。最后查阅了nginx源码,发现这个text/html是写死的……
唉,第一次修改c代码:
我调试的这个nginx是0.7.30版的,文件:
vi ./src/http/ngx_http_special_response.c
568 //r->headers_out.content_type_len = sizeof("text/html") - 1;
569 //r->headers_out.content_type.len = sizeof("text/html") - 1;
570 //r->headers_out.content_type.data = (u_char *) "text/html";
把568 569 570这三行代码注释掉,就可以让nginx跳转时不发送Content-Type,我发现在电脑的IE/FF浏览器上没有Content-Type也能正常跳转。
当然,为了严谨一些,写上Content-Type吧,现在可以用add_header定义:
add_header Content-Type "text/html";
手机的就是:
add_header Content-Type "application/xhtml+xml";
系统
# uname -a # 查看内核/操作系统/CPU信息 # head -n 1 /etc/issue # 查看操作系统版本 # cat /proc/cpuinfo # 查看CPU信息 # hostname # 查看计算机名 # lspci -tv # 列出所有PCI设备 # lsusb -tv # 列出所有USB设备 # lsmod # 列出加载的内核模块 # env # 查看环境变量
资源
# free -m # 查看内存使用量和交换区使用量 # df -h # 查看各分区使用情况 # du -sh <目录名> # 查看指定目录的大小 # grep MemTotal /proc/meminfo # 查看内存总量 # grep MemFree /proc/meminfo # 查看空闲内存量 # uptime # 查看系统运行时间、用户数、负载 # cat /proc/loadavg # 查看系统负载
磁盘和分区
# mount | column -t # 查看挂接的分区状态 # fdisk -l # 查看所有分区 # swapon -s # 查看所有交换分区 # hdparm -i /dev/hda # 查看磁盘参数(仅适用于IDE设备) # dmesg | grep IDE # 查看启动时IDE设备检测状况
网络
# ifconfig # 查看所有网络接口的属性 # iptables -L # 查看防火墙设置 # route -n # 查看路由表 # netstat -lntp # 查看所有监听端口 # netstat -antp # 查看所有已经建立的连接 # netstat -s # 查看网络统计信息
进程
# ps -ef # 查看所有进程 # top # 实时显示进程状态
用户
# w # 查看活动用户 # id <用户名> # 查看指定用户信息 # last # 查看用户登录日志 # cut -d: -f1 /etc/passwd # 查看系统所有用户 # cut -d: -f1 /etc/group # 查看系统所有组 # crontab -l # 查看当前用户的计划任务
服务
# chkconfig --list # 列出所有系统服务 # chkconfig --list | grep on # 列出所有启动的系统服务
程序
# rpm -qa # 查看所有安装的软件包
今天在看Nginx官网是看到Nginx推出了Windows版。
最新的开发为nginx/Windows-0.7.52,下载地址为:http://sysoev.ru/nginx/nginx-0.7.52.zip