Skip to content


oom-killer 的发现 与 swap分区搭建

很不幸机器最近1周一台跑了3年多的机器挂了两次.为了过好5/1决定好好检查一下情况,不幸的是到目前为止还是没有确认最终的因素.

1.检查案发时间:通过cacti的记录,发现机器发生不幸发生在0点到2点之间.这个时间段是后台定时任务运行的高发期.

2.判断一:夜间机器后台任务太过集中,机器load太高,机器年久老化导致机器不堪重负

3.措施: 排查所有crontab中的任务,注释了其中有可以有计算压力太大的任务.把nagios的load报警设到5以下.

4.结果: 不幸在第二次发生.

5.查询日志: 发现在案发时间的日志中记录有关 oom-killer (out of memory)的记录.难道是这个做怪?有关oom请移步http://www.dbanotes.net/database/linux_outofmemory_oom_killer.html.  看了一下本机的内存.发现没有swap分区(当年装机的同事为了提高工作效率) . 再次观察cacti中的内存趋势.内存第天基本没有free.  细看一下crotab中的任务.发现每天2点左右确实有一个吃内存的awstats有跑着.

6.措施: 添加swap别让oom-killer 工作了.

7.添加SWAP:

Continued…

Posted in linux, 技术.

Tagged with , , , , .


工程师招聘

技术经理 若干
职责:
带领3-10人技术团队,开发、完善鲜果网及公司旗下其它产品线。
要求:
1、本科或以上学历,三年以上互联网产品开发经验、一年以上技术团队管理经验。
2、有极强的执行能力,即使最艰难的目标也能带领团队完美实现。
3、对互联网产品的系统架构设计有较深造诣;算法等基本功扎实,编码习惯和文档习惯良好。
4、熟悉PHP+Mysql编程、XHTML、Javascript、CSS,至少了解一种JS库;熟悉数据库设计,熟悉Apache配置,长期使用一种或多种Unix/Linux系统。
5、热爱技术,有创业激情,能承受巨大的工作压力,有超强的自我驱动能力。
6、有大型网站开发经验着优先;参与过开源项目者优先;有个人的技术Blog者优先。

Continued…

Posted in 未分类.


Ignite Beijing 讲话报名

时间:2010年3月3日星期三,19:30~21:30

地点:奇遇花园咖啡馆(问路电话010-88320741)

地址:西直门北展北街9号华远企业号(华远地产)D座一层(地图

详情:http://club.blogbeta.com/149.html

好像上次的主题演讲ppt(amazon相关的)没有放上去。

Posted in 活动.

Tagged with .


关于 MYSQL 字符串类型的存储需求

关于mysql中的列类型如何定义,是一个让初学者让人头痛的问题。列类型的恰当定义是一个数据库高效存储的重要保证,其中字符串类型的定义是最重要也是相对较难的。很不幸到至今我才清楚char,varchar的真正定义方式 。
原因有二.
1.没有亲自动手去试错,文档上说的怎么样,就天真的认为就是那样
2.是看过官方源文档,但没有查看官方原版英文文档

咱们通过对比来加深记忆

1.mysq中文文档http://dev.mysql.com/doc/refman/5.1/zh/column-types.html#storage-requirementsen_Storage_Requirements_for_String

2. mysql英文文档http://dev.mysql.com/doc/refman/5.1-maria/en/storage-requirements.html

Continued…

Posted in mysql.

Tagged with .


转载 snmp 重要的OID 备忘

转载自:
1. http://www.sysadmin.md/most-useful-snmp-oids.html
2. http://blog.chinaunix.net/u2/70049/showart_1136607.html

CPU
Percentages of user CPU time (ssCpuUser)
.1.3.6.1.4.1.2021.11.9
Percentages of system CPU time (ssCpuSystem)
.1.3.6.1.4.1.2021.11.10
Percentages of idle CPU time (ssCpuIdle)
.1.3.6.1.4.1.2021.11.11

Load
1 minute Load (laLoad.1)
.1.3.6.1.4.1.2021.10.1.3.1
5 minute Load (laLoad.2)
.1.3.6.1.4.1.2021.10.1.3.2
15 minute Load (laLoad.3)
.1.3.6.1.4.1.2021.10.1.3.3
Continued…

Posted in linux, 技术.

Tagged with , .


APC cause problems

看技术文档的时候很多作者的警告明知很重要,但经常被我们当作耳边风。不是我们有意把它们忘记,只是很多事情只是经历过之后才能铭记在心。

============================================
APC will probably be 20-30% faster, but if you are writing to it frequently it can cause problems. The APC cache is best for things that change very rarely. And by very rarely I mean days, not hours or minutes.

Because of the way APC does an anonymous file-backed mmap where I unlink the file at startup to get process-death protection, it isn’t easy to get at the cache from a separate standalone command line script. That can be solved by mmap’ing slightly differently, but in the default config your approach won’t work.

-Rasmus
==============================================

apc不适合用于缓存经常改动的内容。如果你的代码经常改动,最好先禁用cache.或者修改后清空一下缓存。

Posted in Web开发, linux, php.

Tagged with , .


Mysql中索引的限制

##摘自mysql的性能调优与架构设计##(备忘)
1.myIsam存储引擎索引键长度的总和不能超过1000字节
2.BLOB和TEXT列只能创建前缘索引
3.Mysql目前不支持函数索引
4.使用不等于(!=或者<>)的时候,Mysql无法使用 索引
5.过滤字段如果使用 函数运算(如abs(column))后,mysql无法使用索引
6.join语句中join条件字段类型不一致时,mysql无法使用索引
7.使用like操作的时候,如果条件以通配符开始(”%abc…”)时,mysql无法使用索引
8.使用非等值查询的时候,mysql无法使用hash索引

Posted in mysql.

Tagged with .


lsof:list open file

lsof的参数很多,不过搞来搞去无非是根据什么条件找出被进程打开的文件句柄。条件有根据文件名,文件夹,进程名,端口号,gid,fd等,太丰富了。当你用到的时候再查手册也来得及。
本人用这个解决的最头痛的问题是:一次由于磁盘空间占用较高了,于随手删除了几个大文件,然后用df查看文件系统使用情况,发现一直没有变。搞了半天找不出个所以然来,了解这个命令之后查询了一下这个系统中所有被打开的文件,发现原来那几个大文件被某个程序使用着呢。关闭那个进程后df结果正常。

Posted in linux, tools.


dd用于磁盘读写性能测试

dd是一个linux下的文件复制和转换程序。除非告诉dd命运去进行某种转换操作,否则它只是进行从输入文件到输出文件的复制工作。不过现在dd更多的用来进行磁盘性能的测试,而不是原始用于copy的意图。

/dev/null:回收站、无底洞. 你可以输入任何东西它不会吃撑着(这种能力吃自助比较合适)
/dev/zero:用于产生字符,会产生无尽的0字符

以下转换自网络(http://www.xclinux.cn/?p=777):不知是否原创,copy过来自己备忘!

1.测试磁盘写能力

time dd if=/dev/zero of=/test.dbf bs=8k count=300000

因为/dev/zero是一个伪设备,它只产生空字符流,对它不会产生IO,所以,IO都会集中在of文件中,of文件只用于写,所以这个命令相当于测试磁盘的写能力。

2.测试磁盘读能力

time dd if=/dev/sdb1 of=/dev/null bs=8k

因为/dev/sdb1是一个物理分区,对它的读取会产生IO,/dev/null是伪设备,相当于黑洞,of到该设备不会产生IO,所以,这个命令的IO只发生在/dev/sdb1上,也相当于测试磁盘的读能力。

3. 测试同时读写能力

time dd if=/dev/sdb1 of=/test1.dbf bs=8k

这个命令下,一个是物理分区,一个是实际的文件,对它们的读写都会产生IO(对/dev/sdb1是读,对/test1.dbf是写),假设他们都在一个磁盘中,这个命令就相当于测试磁盘的同时读写能力。

Posted in linux, tools.

Tagged with , , .


lvs+keepalived 实现负载均衡及快速故障转移

负载均衡主要有两种方式:硬件均衡器,软件均衡。前者是靠钱解决问题的,性能绝对优于后者,这次还是继续上回的穷人话题。如何利用省钱的方案简单的解决负载均衡以及故障转移。先上一个机器部署的示意图。
lvs keepalived
LVS: linux virtual server
lvs就是国产的优秀开源的项目之一,最简单的理解就是建立一个虚拟IP的服务器,然后通过这个虚拟机器把前端的请求转发到后面的真实服务器上实现负载分配。对于老的linux版本需要给系统打上ipvs的补丁,对于新的linux系统已内置了ipvs模块。

lsmod |grep ip_vs #查看是否已加载ipvs模块
sudo modprobe ip_vs #加载ip_vs模块

为了方便进行ipvs管理,还需要安装ipvsadm

sudo apt-get install ipvsadm

关于lvs工作模式的介绍这里有篇IBM的文档对lvs的三种模式的原理,说得十分的详细。

keepalived: 实现机器的心跳检查以及机器的故障转移。
1. 当真实生产机器出现故障的时候,会自动把出问题的机器从集群中删除,当出问题的机器恢复正常的时候,也会自动把机器自动添加到集群中来。这样就可以很平滑很方便维护线上的生产机器。
2. 从图中可以看出,如果没有备份虚机(192.168.1.200)的话。在192.168.1.100机器上还是出现了单点问题。keepalived会在192.168.1.100故障的情况下,把VIP切到192.168.1.200.这其中用到了vrrp协议。注: 开防火墙的朋友得把这两台机器的vrrp端口打开。不然keepalived无法实现主备机器的切换。

上配置文件喽!
192.168.123.100与192.168.123.200
软件:
1.ip_vs
2.ipvsadmin
3.keepalived
Continued…

Posted in linux, tools.

Tagged with .