最新 | 最热门 | 最高评价

+1  MySQL主从服务器数据一致性的核对与修复

Tag: Technical | MySQL
老王 发于 2013年05月03日 21:40 | 点击: 1240 | 展开摘要
我上一次遇到MySQL主从服务器数据一致性问题,想想是几年前的事情了,还依稀记得当时惊慌失措的情景,好在最后借助Maatkit解决了问题。几年后,当我再次面对同样的问题时,Maatkit已经不复存在,转而成为了Percona Toolkit的一部分,不变的是我依旧手忙脚乱,所以还是记录一下吧,保不准啥时候又会遇到这个问题。

如果你在MySQL从服务器上遇到类似下面的错误信息,那么恭喜你中招了:

mysql> SHOW SLAVE STATUS\G

Last_Err

查看全文: http://www.udpwork.com/item/9766.html

+0  被遗忘的Logrotate

Tag: Technical | Logrotate
老王 发于 2013年04月21日 13:42 | 点击: 1227 | 展开摘要
我发现很多人的服务器上都运行着一些诸如每天切分Nginx日志之类的CRON脚本,大家似乎遗忘了Logrotate,争相发明自己的轮子,这真是让人沮丧啊!就好比明明身边躺着现成的性感美女,大家却忙着自娱自乐,罪过!

Logrotate的介绍

显而易见,Logrotate是基于CRON来运行的,其脚本是「/etc/cron.daily/logrotate」:

#!/bin/sh

/usr/sbin/logrotate /etc/logrotate.conf
EXITVAL

查看全文: http://www.udpwork.com/item/9695.html

+0  通过Nginx/Lua给Redis的PIPELINING减肥

Tag: Technical | Lua | Nginx | Redis
老王 发于 2013年03月24日 16:46 | 点击: 1364 | 展开摘要
某手机应用市场项目,其中请求量最大的功能是查询升级接口,具体点来说:客户端会不定期的把手机中应用名称及其应用版本发送到服务端,服务端通过比较版本来判断客户端的应用是否需要升级,如果需要就返回若干项相关信息。通常,一台手机里会装几十个到上百个应用不等,当海量客户端一起请求时,服务端的压力可想而知。

客户端请求的数据格式如下所示,可以采用GET或POST方法:

packages=foo|1&packages=bar|2&packages=<NAME>

查看全文: http://www.udpwork.com/item/9519.html

+0  一个替换问题

Tag: Technical | Linux
老王 发于 2013年03月22日 20:05 | 点击: 1002 | 展开摘要
今天碰到一个替换问题:需要把全部接口中出现的一个链接改成另一个链接。虽然链接地址是保存在数据库中的,但是由于某些原因,不能直接修改数据库中的内容,只能在渲染结果的时候再进行替换。

如果有很好的逻辑封装的话,这个问题并不是什么难事儿,可恰恰代码一团乱,搞不清楚到底哪些接口需要修改。我本打算依靠蛮力挨个文件查,但试了试发现工作量实在太大了,没办法只能想想别的招儿。

最后找到的招儿就是「tcpdump」,通过它可以直接过滤服务器渲染的内容:

shell> tcpdump

查看全文: http://www.udpwork.com/item/9511.html

+0  记一次丢包网络故障

Tag: Technical | Linux
老王 发于 2013年02月26日 19:18 | 点击: 1109 | 展开摘要
某台「Nginx / PHP」服务器时不时出现HTTP请求响应卡住的现象。

开始我怀疑PHP有问题,但是通过查询Nginx的access日志,发现里面记录的PHP响应时间「$upstream_response_time」非常小,此外还通过Strace命令仔细核对了是否存在耗时的操作,结果一无所获,所以基本排除了PHP的嫌疑。

BTW:关于Strace的介绍请参考我以前写的:DevOps的三板斧

接着我把目光转移到了Nginx身上,琢磨着是不是Nagle算法导致的网络延迟

查看全文: http://www.udpwork.com/item/9327.html

+0  HTTPKeepAlive,开启还是关闭

Tag: Technical | HTTP
老王 发于 2013年02月02日 18:14 | 点击: 1163 | 展开摘要
所谓「HTTP Keep-Alive」,在维基百科里称为「HTTP Persistent Connection」,说白了就是复用HTTP连接,如此一来理论上客户端的用户体验会更流畅,但是与之相对服务端不得不维持大量的连接。开启还是关闭,这是个问题。

一个经常用来讲解HTTPKeepAlive的例子一般是这样描述的:当我们访问一个包含了若干个图片的网页时,如果HTTPKeepAlive是关闭的,那么页面中每一个图片都会发起一次连接请求;但是如果HTTPKeepAlive是开启

查看全文: http://www.udpwork.com/item/9208.html

+0  如何使用Shell缉拿问题进程

Tag: Technical | Shell
老王 发于 2013年01月30日 13:41 | 点击: 1120 | 展开摘要
最近公司服务器不太稳定,总是在凌晨某个时段突发高负载情况,因为客观环境比较复杂,所以很难猜测出到底是哪个进程出现了问题,加之故障发生时,通常我在睡觉,等我被报警短信吵醒,通过公司VPN登上服务器的时候,故障多半已经消失了!不过这个问题难不倒一个合格的DevOps,让我写个Shell搞定它。

实际上解决问题的思路非常简单:通过CRON每分钟运行一个Shell,查询系统负载,一旦发现异常,就通过「ps」命令保存进程快照,也可以进一步保存负载,内存等相关的数据,但通常没有必要,因

查看全文: http://www.udpwork.com/item/9185.html

+0  DevOps的三板斧

Tag: Technical | AWK | DevOps | Gnuplot | Strace
老王 发于 2013年01月26日 22:31 | 点击: 1453 | 展开摘要
话说这些天电视上正在热映《隋唐英雄》,虽然我并没有看,但是对当年田连元老先生的评书联播《隋唐演义》却是记忆犹新,特别是故事里面讲到的程咬金的三板斧:拍蒜瓣、戳脚指甲盖、胡椒面,每每听来总是让人忍俊不禁,不过这些貌似无厘头的招数在实战中却往往有出奇制胜的效果,由此可见简单实用永远都是硬道理,在当前这个倡导DevOps的年代,我们这些程序员自然也要学一些运维方面的本事才好安身立命,下面结合一些真实案例说说我在日常工作中常用的三板斧。

第一板斧:AWK

Web服务器负载飙升,猜

查看全文: http://www.udpwork.com/item/9168.html

+0  记Redis那坑人的HGETALL

Tag: Technical | Redis
老王 发于 2013年01月21日 21:14 | 点击: 1718 | 展开摘要
世上本没有坑,摔的人多了,也便成了坑。

早就听人说过Redis的HGETALL是个坑,可我偏偏不信邪:不管什么坑,一定要自己踩上去跺两脚才肯罢休。说好听点这是不到黄河心不死,说难听点就是不见棺材不落泪。

开始程序运行的非常稳定,稳定到我想送所有说HGETALL是个坑的人一个字:呸!此时的我就像温水里的青蛙一样忘记了危险的存在,时间就这样一天一天的过去,突然有一天需求变了,我不得不把HASH数据的内容从十几个字段扩展到一百多个字段,同时使用了Pipelining一次性获取上

查看全文: http://www.udpwork.com/item/9124.html

+0  Memcached二三事儿

Tag: Technical | Memcached
老王 发于 2012年12月30日 19:43 | 点击: 6941 | 展开摘要
Memcached绝对称得上是NoSQL老兵!可惜随着时间的推移,Redis等后起之秀羽翼渐丰,Memcached相比之下已呈颓势。那我们还用不用学习它?答案是肯定的!毕竟仍然有很多项目依赖着它,如果忽视它,一旦出了问题就只有干瞪眼的份儿了。

网络上关于Memcached的资料可以说是浩如烟海,其中不乏一些精彩之作,比如说由爱好者翻译的「Memcached全面剖析」系列文章,在中文社区广为流传,虽然已经是几年前的文章了,但是即便现在读起来,依然感觉收获良多,推荐大家多看几遍

查看全文: http://www.udpwork.com/item/8946.html

+0  SWAP的罪与罚

Tag: Technical | Linux | SWAP
老王 发于 2012年11月08日 15:41 | 点击: 1340 | 展开摘要
说个案例:一台Apache服务器,由于其MaxClients参数设置过大,并且恰好又碰到访问量激增,结果内存被耗光,从而引发SWAP,进而负载攀升,最终导致宕机。

正所谓:SWAP,性能之大事,死生之地,存亡之道,不可不察也。

哪些工具可以监测SWAP

最容易想到的就是free命令了,它指明了当前SWAP的使用情况:

shell> free -m
total used free
Swap: 3417

查看全文: http://www.udpwork.com/item/8590.html

+0  管理Gearman

Tag: Technical | Gearman
老王 发于 2012年10月30日 21:11 | 点击: 1431 | 展开摘要
通常,Gearman被用来分发任务,以便实现异步操作。下面捋捋如何管理Gearman。

说明:请自行安装好Gearman和PHP PECL Gearman。

准备

我们先来创建一个Worker,实现一个简单的显示功能:

<?php

$worker= new GearmanWorker();

$worker->addServer('127.0.0.1', '4730');

$worker->addFunction('echo', 'my_echo

查看全文: http://www.udpwork.com/item/8480.html
|<<<45678910>>>| 一共11页, 131条记录