Loading...

Tag Archive for 'linode'

    AD: 猛买网,精彩团购 | Jobsdigg | 很棒的男装店 | 网站地图

LAMP最小优化

假如你在Linode入手了一个VPS,迅速地部署了Ubuntu,然后使用一大堆apt-get把LAMP服务都搭好了(这整个过程也就10分钟吧,可以更短)。此时可以算是“It works”,但还颇有一些地方需要调整。本文就在这种场景下,写一下此时可以做的最小优化,作用范围不仅限于Linode、Ubuntu,其他系统也可以参考。希望对一些朋友有帮助。
Linux
日志切分
如果没有日志切分,日志可能很快会把硬盘塞满,最后不得不手动清理。做日志切分推荐用logrotate,易于配置,一旦配置完成就会默默无闻地工作。
调整swapiness
swappiness用来控制使用系统swap的概率,ubuntu内核默认是60。建议修改为0,使系统尽可能使用物理内存而非swap。实际上,在上次Linode升级套餐后,我已经关掉了swap,系统运行得依然稳定。具体修改方法可以百度一下。
UPDATE: 经 @7id 提醒,swappiness参数更多的是降低磁盘io操作,对于内存不是特别小的情况,差别不大。详细请看下方留言。
Apache
启用压缩
启用压缩,可以减少传输的内容。对WebServer来说这几乎是必须的,但默认的Apache安装并未开启压缩。对于比较慢的连接,启用压缩会有更多好处。
调整MaxRequestsPerChild
MaxRequestsPerChild用于设置每个子进程在其生存期内允许伺服的最大请求数量。到达MaxRequestsPerChild的限制后,子进程将会结束。如果这个参数为0,Apache进程占用的内存会只增不减。一些使用Apache的VPS经常遇到iorate很高,可以尝试调整一下这个参数(ref)。
Mysql
关掉InnoDB
如果服务器用来放blog或是论坛,多数时候MyISAM就足够用了。此时可以把InnoDB关掉。my.cnf中的注释说:”You might want to disable InnoDB to shrink the mysqld process by circa 100MB.”。实测在VPS关掉Innodb时虽然没节约了100MB,但50M还是有的,内存珍贵,能省则省吧。
只需在my.cnf加入一行 skip-innodb 就可以把InnoDB的功能关掉。
PHP
开启输出缓冲
在使用mod_php时,如果不开Output Buffering,每一个输出都会使Apache向客户端发送数据,导致效率很低。使用fastcgi时,由于WebServer本身有buffer,影响并不大。但默认的apt-get安装,使用的就是mod _php,因此建议在php.ini里把Output Buffering打开。

以上只是一些最初级的调整,叫做“优化”都显得有点夸大。但在初期遇到问题时,调整这些地方往往可以很快见效。
除此之外,强烈建议用nginx换掉Apache。

Linode内存*大*升级

昨天Linode官方blog发表了一篇文章:Linode Turns 7, BIG RAM Increase 。大意是,为了庆祝Linode 7岁生日,他们将所有Linode服务器的内存都增加了42%。
此番增长以后,原来最低配的Linode 360现在变成 Linode 512,而价格依然保持在$19.9。相比之下,在SliceHost买同样内存的VPS需要$38,选择MediaTemple新推出的ve也需要$30。
我原来用着Linode 720,一直为内存不够而发愁,现在直接升级到了1024M内存,已经根本不用swap了。

当然,内存升级之后,机器是需要重启一下才能看到效果的 。

提供Linode技术支持

最近使用Linode的朋友越来越多,我收到各种各样的咨询邮件。前几天,我还通过GTalk帮助一位朋友从开始购买Linode直到迁移完成网站所有数据。但是不论是邮件还是IM,都不免空对空,往往一个简单的问题需要交流很久。
因此我打算,向使用Linode的朋友提供有偿的技术支持。如果你:

打算/正在使用Linode但不熟悉shell
没有足够的时间或干脆不想自己维护服务器

我可以帮你打理,这样也节约你的宝贵时间。我可以提供的服务包括:

LAMP环境搭建
安装nginx并配置php-fastcgi
安装开源软件(如Wordpress)并配置好webserver、db
从其他托管商(如Dreamhost,需要提供shell)迁移网站到Linode
搭建Rails运行环境,安装Passenger
服务器性能优化咨询+实施

除最后一项外,其他每项费用¥150或$30,接受百付宝或Paypal支付。
我的邮箱是 zhanglei909(at)gmail.com,如有需要,请联系我。
* 对于有时间倒腾的朋友们,我还是建议多看看各种guide,自己摸索。收获会很大。

榨干服务器:让进程运行在指定的CPU

我的Linode十分繁忙,在跑一些密集操作数据库的Rake任务时尤其如此。但我观察发现,Linode服务器的4核CPU,只有第1个核心(CPU#0)非常忙,其他都处于idle状态。
不了解Linux是如何调度的,但目前显然有优化的余地。除了处理正常任务,CPU#0还需要处理每秒网卡中断。因此,若能将CPU#0分担的任务摊派到其他CPU核心上,可以预见,系统的处理能力将有更大的提升。
两个名词
SMP (Symmetrical Multi-Processing):指在一个计算机上汇集了一组处理器(多CPU),各CPU之间共享内存子系统以及总线结构。 [更多...]
CPU affinity:中文唤作“CPU亲和力”,是指在CMP架构下,能够将一个或多个进程绑定到一个或多个处理器上运行。[更多...]
一、在Linux上修改进程的“CPU亲和力”
在Linux上,可以通过 taskset 命令进行修改。以Ubuntu为例,运行如下命令可以安装taskset工具。
# apt-get install schedutils

对运行中的进程,文档上说可以用下面的命令,把CPU#1 #2 #3分配给PID为2345的进程:
# taskset -cp 1,2,3 2345

但我尝试没奏效,于是我关掉了MySQL,并用taskset将它启动:
# taskset -c 1,2,3 /etc/init.d/mysql start

对于其他进程,也可如此处理(nginx除外,详见下文)。之后用top查看CPU的使用情况,原来空闲的#1 #2 #3,已经在辛勤工作了。

二、配置nginx绑定CPU
刚才说nginx除外,是因为nginx提供了更精确的控制。
在conf/nginx.conf中,有如下一行:
worker_processes  1;

这是用来配置nginx启动几个工作进程的,默认为1。而nginx还支持一个名为worker_cpu_affinity的配置项,也就是说,nginx可以为每个工作进程绑定CPU。我做了如下配置:
worker_processes  3;
worker_cpu_affinity 0010 0100 1000;
这里0010 0100 1000是掩码,分别代表第2、3、4颗cpu核心。
重启nginx后,3个工作进程就可以各自用各自的CPU了。
三、刨根问底

如果自己写代码,要把进程绑定到CPU,该怎么做?可以用sched_setaffinity函数。在Linux上,这会触发一次系统调用。
如果父进程设置了affinity,之后其创建的子进程是否会有同样的属性?我发现子进程确实继承了父进程的affinity属性。

四、Windows?
在Windows上修改“CPU亲和力”,可以通过任务管理器搞定。

* 个人感觉,Windows系统中翻译的“处理器关系”比“CPU亲和力”容易理解点儿
—————–
进行了这样的修改后,即使系统负载达到3以上,不带缓存打开blogkid.net首页(有40多次查询)依然顺畅;以前一旦负载超过了1.5,响应就很慢了。效果很明显。

两则有趣的Alexa数据

闲来无事,看看Alexa,却有些特别的发现。
一、Linode(Alexa)的流量数据中,来自中国的流量已经超过了美国。

看到这个,我第一感想是:不会吧,国内我们这么几个人推动一下,就迅速打败了Linode自己在美国的推广?
随着国内的口袋越收越紧,也许用上Linode的人会越来越多。现在Alexa已经把Linode当成一个中国的网站了,进去直接给显示“Traffic Rank in CN”而不是US。
二、支付宝(Alexa)流量最大的频道是积分频道

不知道是不是和A公司年终拼命推广有关(近期Alexa排名增长非常迅速)。但积分频道的流量远超其他频道,绝非一日之功。最近支付宝的新版上线,昭示着它已经脱离了单纯的支付工具这一角色,不论是从形式上还是实质上。如今再叫“积分频道”已经不太合适了,也许该叫“生活频道”?

为Linode的卓越VPS服务喝彩

好多好多上线时,人多,缓存也还未生成,服务器一下顶不住了。让我下决心把我的Linode升级到一个更高的配置。有心的朋友们会问,难道Linode服务器如此脆弱不堪,开新网站就会挂掉?非也,非也。其实是因为这台540M内存的Linode上,跑着的服务太多:mysql、memcached、sphinx、nginx以及5个php-cgi进程和8个thin服务器。因此540M内存是怎么也嫌少的,一旦一个请求处理慢了,就很容易使CPU长时间处在上下文切换上,甚至引起Swap抖动。而只要把内存增加一点,情况就会大为好转。
于是昨天中午我在Linode后台开了一个Support Ticket,大意是要将我的linode升级到720 plan,并希望可以ASAP。要知道,和资本主义国家有8小时时差,怎么也得等到凌晨才能处理了。没想到不到半小时就收到了回复,让我到账户里进行migrate,所有文件、配置都不会丢失。我当时就震惊了,还有比这更简便的服务器升级方式么?
登录到我Linode后台,果然有个大大的按钮。关掉服务器,点一下此按钮,Linode开始转移我的数据到新服务器上。整个过程全自动,并且有进度条显示。

在等待过程中,还可以更改磁盘设置,调整分区大小,怎一个酷字了得。
从开始迁移到全部完成,只用了半小时,过程极其顺利。不用担心数据丢失、不用满头大汗跑机房插内存,这就是VPS的好处。服务器升级后拥有720M内存,性能问题得到了解决。
Linode真的是太赞了,简洁清爽的面板,提供root权限,有多种操作系统可选。更不用说专业及时的技术支持、Fremont/Newark机房的高速带宽。还坚守在Dreamhost的兄弟们,你们动心了么?
因此,我甘愿做一个喝彩党,向Linode工作人员致敬;也以此文,向五毛贼亦非致敬,老人家没准正换着ID,在给绿坝喝彩呢。
延伸阅读:Linode服务介绍

几件小事

Fennged!
本周收到了Fenng寄给我的书,一本《小强升职记》,感叹Fenng老师对职场新人的关怀,可以说是无微不至啊。后来Fenng在blog上贴出来TOP译稿的第一章,不少朋友们都提出了修改的意见,实际上这份蹩脚的译稿,大部分内容是我贡献的。虽说后来他做了细致的校对,但总难尽美。译稿贴出来以后,Fenng华丽离地为我背了黑锅……
今早起来,我的twitter又流水一般多了许多follower。再次向Fenng说声感谢。
南京,南京
周六和子宁去看了《南京,南京》,感觉片子里屠杀的场景来得太突然,几乎没什么铺垫。更突兀的是唐先生被杀的那段,几分钟前还是拉贝的秘书,拉贝一走就成了枪下鬼。
看电影过程中,剧院里有不少小朋友。在角川第一次找慰安妇没法成功戴上TT的那段,前排一个小女孩问父母,“他们在干吗呢”,真可爱。
促销
我之前推荐过的一家淘宝男装店,最近正在办活动。一般会员85折,高级会员8折,VIP76折。我觊觎着这家好几件衣服:一件burberry千鸟纹衬衫,一双Paul Smith的鞋子以及一条裤子,终于到了出手的好时候。再次向大家推荐这家好评率100%的皇冠店铺。我去年底买的风衣(已经卖到爆,重新补货)、裤子都非常酷,很满意。
我在这家店铺可以打八折(活动期间),如果需要,我也可以帮忙代购。
Linode
我用的 Linode 本周也有动作,把每个档次VPS的硬盘都增加了33.3%。我原来有18G硬盘,现在有24G了。
使用Linode一个月了,感觉很不错,也推荐了同事来买。感叹同事们都是有钱人,一买就是一年,几百美金眨眼就刷走了。我只舍得按月刷。不过我买得资源太多了用不完,服务器的load average保持在0.5一下。
Fenng买了Dreamhost的VPS,还顺便玩了一把litespeed。我这里还有5个宝贵的Dreamhost Invitations,详细的说明可以看这里。需要的朋友可以找我要。
脂肪肝
一个体重比我轻20斤的同事,告诉我体检查出了轻度脂肪肝,晚上已经不敢吃东西了。据说另一个被称为神的前同事,体检结果只见脂肪不见肝。这一下说得我后背发凉。我所爱吃的东西,不外乎猪肝大肠牛肚鱿鱼,似乎没一样健康的 -_-。
得锻炼。住处附近有家健身房,用子宁的工牌还可以优惠,我想,等下半年正式入职以后,花点血本去办张卡吧。

主机迁移至Linode

本来打算给我放在扬州电信的独立服务器续费的,但是上周我服务器居然毫无征兆地被关了。之后才知道是我写的这篇《可怜的大学生》被盯上了。在我保证会删掉文章后,服务器才重新被打开。自从要严打没有备案的网站以来,我关掉了自己所有没备案的网站,但还是三天两头被折腾。我知道这不能怪IDC,只好决定把网站“搬回”美国。
我选择了Linode的VPS,540Plan,迁移成功后网速和服务器速度都非常快。我也把那篇被迫隐藏的文章没做任何修改再次打开,大家可以看看,我不觉得自己的文章有什么问题。作为一个共产党员,不隐瞒自己的观点,我要向折腾我的傻B说:有本事来关我的服务器吧,要是您关不掉,动用GFW也成。
发牢骚完毕,我简单说一下迁移到Linode的过程;如果你熟悉linux,我估计从购买Linode到blog迁移完成甚至不会花掉1个小时。
先到Linode首页,右上方有个“Sign Up”的链接。注册需要填写信用卡信息,并且选择一个Plan,如果只是个blog,每月$19.95的360 Plan已经足够用了。提交后就会提示要刷掉多少多少美金,再下一步,账户已经创建成功并被激活,当然,相应的美金也被刷掉了。
之后登录进入DashBoard,需要选择Linode放置的机房。我选了fremont,据说速度非常快。之后会进入“Distro Wizard”。这个向导非常简洁,选择好想要的Linux发行版(我选了Ubuntu 8.10),设置了内存、Swap和硬盘的大小,最后给root设置个密码,点“create profile”,系统就配置好了。

回到DashBoard,会看到已经配置好的Profile,点“boot”。稍等片刻系统启动后,用root用户和刚才设置的密码连一下ssh,应该可以连上了。

完成以上的步骤最多15分钟。之后可以开始安装必要的软件。在ubuntu下用apt-get很方便,LAMP可以全用apt-get就装好。正如我开头说的,如果只是迁移一个blog,甚至不会花掉一个小时。
Fremont机房的速度很快,我特地装了一个测试速度的工具。测试结果如下:

把上面的数字除以8,就是我们通常意义上的KB/s了。如果大家有兴趣,可以在这里测一下到我Linode的速度。