Tag Archives: Linode

Tuning Linode VPS-小规模低性能低流量网站优化实践

偶然看到以前写过的这篇帖子 『小规模低性能低流量网站设计原则』,重新发到微博上引起了一点反响,觉得有必要以 Linode VPS 为例再做个简单的优化实践说明,免得总有人问我,也顺便赚点点击量 :)

假定现在你已经有了一个基本的 VPS 可用,基本内存 512MB 。参考官方提供的各种安装指导将 LAMP 这个组合运行了起来,操作系统一般 Ubuntu ,Web 服务器 Apache ,数据库 MySQL ,然后是 PHP ,以及需要安装的应用软件,WordPress 、Drupal 或是 OpenCart 什么的,一步一步配置好,能够正常的浏览页面。按照官方指导文档操作的一个好处是会包括一些基本的优化一点的配置。不至于出现太大的错误。

一旦应用就绪后,登录到操作系统中,通过 top / iostat / free 等基本操作系统命令收集基准数据,做记录。收集信息越全面,对于后面的优化就越便利。优化没有魔法,只有合理的方法。

1.内存相关的调整
内部测试或是较小范围使用,可能这样也不会遇到太大问题。一旦访问人数多了一点,机器响应可能就有点慢了。对于 VPS ,第一步着手调整的就是各个组件对内存的使用。因为内存受限,对内存的使用一定要精打细算一点。记住一旦内存耗尽,一部分内存调用压到磁盘上,系统负载会飙升,一般就会挂掉。 一般来说,对于 LAMP 环境,以下几个地方要注意:

PHP 程序的内存相关的调整
PHP5 配置文件 php.ini 中 memory_limit 定义的值默认情况是16MB,该参数定义单个 PHP 脚本消耗最大的内存大小(大意)。如果程序某个页面需要的内存超过这个限制,访问者最可能遇到一个 HTTP 500 错误,查看 Web 服务器错误日志也可以看到。多数情况下,这个值需要做相应调整。比如设置为32MB,是否合适,需要做观察。有一个经验方法是观察 top 命令的输出,看相应进程的 SHR 字段的值,实际上总是尽量大一点点。但不能过大,一旦有个别程序写的不好调用的时候占用过多资源,会导致 VPS 挂掉。

经常有人问,这个服务器跑某某 Web 应用,能支持多少并发? 一个大致的思路是估算单个进程占用的内存,看系统能分配多少内存给应用程序,并发的量大致可以估算得到。但实际上,这个提问基本没多大价值。

另外,还有一个比较重要的参数需要修改 output_buffering 需要修改为 On 或是具体数值(eg, 4096)。修改配置后,检查是否生效(如何检查?)。另外,记住error_log的位置,随时查看。

MySQL 数据库内存占用
如果不确定 MySQL 内存使用情况,可以利用 MySQLReport 这个工具收集一下 MySQL 实例的信息报告,不同时间段多收集几次作为对比。然后相应的调整 key_buffer/query_cache_size 等参数的大小, 一次调整一个参数,重启动 MySQL ,继续抽取报告,分析数据,然后调整下一个参数。既然需要编辑配置文件 my.cnf , 建议顺手加大一点 max_connections 这个参数(为什么?)。

多数内存问题都是由数据库 I/O 引起,导致 I/O 问题多由不合理数据库调用有关(这么说严谨么?),解决不合理调用要么修改应用,要么通过查询缓存或是 Key-Value Cache 等办法缓解。这地方说来话长,假定 VPS 上基本不会有这么复杂的环境。

2. 影响 CPU 利用率的调整
这个主要针对 PHP 的 Opcode(Accelerator) 而言,解析、编译PHP代码是相当消耗CPU的操作。常见的要么是 APC, 要么是 eAccelerator 或是 XCache,在 Ubuntu 下安装配置都相对简单,参数调整简单搜索一下就知晓了。如果是 PHP 环境,那么一定要用 Opcode 减少 CPU 的负荷(为什么?)。至于用哪一个关系倒是不大,但前提是必须要有一个。

另外,张磊同学这篇 让进程运行在指定的CPU 对于特定需求的应用,很有借鉴意义。

3. 网络参数控制
修改 /etc/sysctl.conf 文件,增加如下几行:

net.ipv4.tcp_syncookies = 1
net.ipv4.tcp_tw_reuse = 1
net.ipv4.tcp_tw_recycle = 1

然后 sudo sysctl -p 使修改生效。使用如下一行命令观察半连接数量:

$ netstat -n | awk '/^tcp/ {++S[$NF]} END {for(a in S) print a, S[a]}'

其实一般来说,网络连接数不会成为最明显的瓶颈。但顺手调整一下也好,「不费电」。有人问,如果遇到 DDoS 怎么办忍着。

4. 应用程序相关的调整
比较流行的开源程序,不安装第三方插件的情况下,性能多少过得去。建议如果没有必要,不要启用过多的第三方插件,尤其是一些带有统计或是「智能」显示内容之类的插件能不用就不用。

这些开源程序也基本上都有面向前端优化的静态化解决方案,比如 WordPress 的 Cache 相关的插件,强烈推荐启用。有时间看看前端优化的实践建议。

Tuning_LAMP.jpg (图片来源)
优化最重要的是找到瓶颈,对症下药。前面已经说到了内存、CPU、网络,大致提了一点 I/O 问题,基本也就够了。PHP 的 Log , MySQL 的慢查询 Log ,Apache 的 Error Log ,常过滤看一下有没有新情况。

补充一点,别忘了修改 OS 的 ulimit 限制:

编辑 /etc/security/limits.conf 增加如下两行(具体数值大点小点问题不大):

*  soft  nofile 40960
* hard nofile 40960

编辑 /etc/pam.d/common-session ,增加如下一行:

session required pam_limits.so

编辑 /etc/profile ,增加如下一行:

ulimit -SHn 40960

重新启动 OS 即可生效。

Linode 后台提供了几个基本的统计图,基本够用。可以设置磁盘 I/O 过高的时候报警,系统会发邮件给你。注意看一下网络流量的使用。不要因为个别文件被盗链而将带宽消耗殆尽。

上面提到的不少修改建议不要照葫芦画瓢,知其然,还要知其所以然。每一步的调整多阅读系统手册,尤其是涉及到具体的参数数值,一定要针对实际情况修改。对基本的配置足够掌握之后,可以根据具体情况尝试性能效率的组件,比如用 Nginx/Lighttpd 替换 Apache ,但是要记住,如果 Apache 不是瓶颈的话,用传说中性能更好的 Web 服务器来替换无疑是折腾。

再次提醒不要过度优化,足够满足需求就行了。有更多的精力完全可以放在其他环节上。另外,如果基本的调整做过之后,想用最省事的办法改善性能,那么,直接向服务商购买额外的内存吧。

好吧,最后我想说的是其实这个优化思路并不局限于 VPS ,这个最小实践套路对于复杂的服务器环境也是基本适用的。 –EOF

Tip:页面不要引用太多的三方脚本。否则也会被拖慢不少。

Linode VPS 迁移到日本 Tokyo IDC

Tokyo Hot!

今天看到 Linode 针对亚太地区用户的需求新开辟了日本东京机房。价格不变,速度会更快(地理优势),看了网友的反馈也是如此。所以第一时间迁移了过去。

迁移 VPS,需要在后台 Support 处开一个 Ticket ,客服人员会在分钟级别提供响应,提供一个简单的指导,要你关掉 VPS , 点击迁移 , 然后耐心等待。并且会告之你在东京机房的 IP 地址。

这里有一个小技巧:在客服通知你新的 IP 之后,先在后台 DNS Manager 中修改 DNS, 以便减少一些宕机时间,否则 迁移完了还要再等 DNS 生效(另:推荐使用 DNSPod 的服务,谁用谁知道)。因为是跨机房迁移,所以操作系统磁盘镜像文件传输速度并不是特别快,我观察到的速度是 2MB/s 左右。启用新的IP之后,如果你的服务器配置绑定了IP,记得修改一下。

如果 Startup 团队要选择 VPS ,面向国内用户的话,建议选择 Linode 东京的机房就可以,访问速度相当不错。值得一提的是,Linode 前不久推出的 NodeBalancer 也是个很有趣的服务。如果对可用性要求较高,或许可以尝试一下。

每当品评国内云计算公司,我喜欢拿 Linode 说事儿,或许有些人会觉得 Linode 做的是小生意,也有人私下里嘀咕:是不是你只知道 Linode?看看数据吧,事实是:Linode 去年(2010)收入1070万美元。而员工数?只有19人!位列 Inc. 500 名单。这家公司并不是一夜之间冒出来的,2003年就已经成立。如果前几年乱烧钱,早死在沙滩上了。

EOF
BTW, 我的 Linode referral code: 92405a6e282a712f7a1270e98d16eba13efb1b68
如果你也准备购买,不妨用一下我的 referral code :)

此文作者:, 位于 SiteLog 分类 标签: on .
转载须以超链接形式标明文章原始出处和作者信息及版权声明.

使用 Linode 一年小记

去年 11 月中旬,在豆瓣的友情赞助下开始使用 Linode 的服务,到现在为止已经一年多了。有必要和大家分享一下我使用 Linode VPS 的一些感受。

首先说一下 Linode 提供的升级服务,Linode 360 免费升级到了 Linode 512,摩尔定律带来的益处让消费者也能受益,而不是一个定价一成不变(在这里我很鄙视国内的那些垄断企业,相关资费始终高居不下),尽管 Linode 的 VPS 差不多是一个供不应求的状况。另一个变化是 Linode 后台管理工具进行了升级,比以前更为直观清晰。Linode 甚至还有个 iPhone 应用,可以进行一些简单的管理工作。这些对用户来说,都是很受令人欣赏的努力。

这一年来我这个网志站点的可用率终于比以前提升了许多。尽管有过几次较长时间的不可用,那是因为我个人没有及时维护造成的。对于这样规模( Alexa 数据大约 45000 左右)的个人站点来说,每个月 200GB 流量的限制从来没有用光过,磁盘存储空间更是绰绰有余。至于费用问题,初始缴费之后到现在甚至没有继续产生费用,反而赚了一点–引荐(referral)其它用户得到的收益,到现在为止我大致计算了一下,起码有 500 美元的虚拟收入在那里,第二年的费用应该也够了,所以,我又启用了 Linode 的备份服务。对于个人 VPS 消费者来说,通过 referal 的获益降低成本是个很好的模式。也期待如果有朋友看了我的文章觉得有用的话,恰好你又要购买 Linode 的 VPS,不妨使用我的 Refer 代码,于己无损,于人受益。

关于 referral,是一个值得重视的商业方法,能够有效的提升用户的忠诚度。作为创业公司,尤其应该借鉴一下。这或许也是使用相关服务得到的一点收获,不光是使用提供的产品,也稍微研究一下他们的商业手段,这也是一种收获。

Linode 是不是最好的 VPS ?不一定是,但可以肯定的是至少它是一个很不错的 VPS,这就够了。我看到有很多网友整天在各个 VPS 之前迁移来迁移去的,其实,人的时间也是很大的成本,也是要慎重考虑在内的。

尽管一年已经过去了,但是国内仍然没有很值得推荐的 VPS 提供商,或者有不错的,但是我不知道。而一些哭着喊着要做云计算的大公司,甚至连个像样的 VPS 也捣鼓不出来–也或许不屑于做这个?其实 VPS + App 自动部署的模式,潜在的市场应该不小,比如 VPS 上部署一个网店软件,起码会很受电子商务中小企业的欢迎,但很遗憾,目前还看不到这些。

广告:

  • Linode 的 Refer 代码:92405a6e282a712f7a1270e98d16eba13efb1b68 。用了这个代码注册,过几个月据说我可以得到一点好处,就当你做一回雷锋 :)
  • 如果要使用 Dreamhost ,我以前設置的优惠代码:FENNG 依然有效。对于很多在校的学生来说,如果一年只有20多美元的成本,有一个可以部署 Web 应用的环境,还是很不错的。

EOF

此文作者:, 位于 SiteLog 分类 标签: , on .
转载须以超链接形式标明文章原始出处和作者信息及版权声明.

Yes! Linode VPS

感谢豆瓣独家提供的两年托管赞助费用!这几天利用空闲时间把 Blog 站点迁移到了 Linode.com 提供的 VPS 上。或许,可以在一段时间内缓解重建页面的性能问题,用户留言的速度也会好很多。

原来站点放在 Dreamhost 上,但是年初的时候频繁遇到 HTTP 500 错误,那段时间,我发布一篇文章都要反复 Build 多次才能成功,很影响积极性。可气的是,Dreamhost 还不断给我发他们的 PS (Private Server) 的折扣信息,一不小心上了贼船,发现上去后反而下不来–不让且回到原来的共享模式下,结果几个月下来花了不少银子。性能,其实也没好到什么地方去。

建议如果 Dreamhost 共享服务器够用,就别升级,也别切换了。毕竟,Dreamhost 的共享主机性价比还是不错的,迁移起来,其实也颇为费事。

我买的是 Linode 360 这个服务整年购买还能优惠 10%,也有优惠代码,不过现在都过期了。购买之后第一个决定是要选择 IDC ,都说旧金山的 Fremont 速度较快,相信大家的,没错。主机用了 Ubuntu ,然后登录进去用 APT (Advanced Packaging Tool) 安装软件或者更新系统,速度那叫一个快啊。早知道这样,再贵一点可能也要买 Linode。在 Dreamhost 上折腾来折腾去的浪费多少精力… 在 Linode 上,如果后续需要更大的内存,随时可以扩容,操作极其方便。 对于CPU 能力、硬盘空间和带宽开销,似乎也很难用到那么多,如果喜欢调试服务器,倒是可以看看怎样能更有效利用内存。对于技术爱好者来说,Linode 是个很好的操作系统玩具。

大家都喊着”云计算”,但是面向个人用户这一块的市场需求似乎没有人关注。随着硬件价格的下降,VPS 服务越来越值得个人用户使用,或许,明后年,个人用户也能用上 Amazon 的 AWS 服务了。技术的乐趣在于折腾。

接下来,可以静下心来好好写一阵东西了。

广告:

  • Linode 的 Refer 代码:92405a6e282a712f7a1270e98d16eba13efb1b68 。用了这个代码注册,过几个月据说我可以得到一点好处,就当你做一回雷锋 :)
  • 如果要使用 Dreamhost ,我以前設置的优惠代码:FENNG 依然有效。
  • 另请参见 BlogKid 对 Linode 的介绍

EOF

延伸阅读:选择美国主机的机房地理位置与网络分析 http://oncn.net/641228

Updated: Linode 从 2011.09.20 开始提供东京的 IDC,我已经将 VPS 迁移到 Tokyo 了。速度相当不错。

此文作者:, 位于 SiteLog 分类 标签: , on .
转载须以超链接形式标明文章原始出处和作者信息及版权声明.