最新 | 最热门 | 最高评价

+0  一个替换问题

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

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

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

shell> tcpdump

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

+0  记一次丢包网络故障

Tag: Technical | Linux
老王 发于 2013年02月26日 19:18 | 点击: 1095 | 展开摘要
某台「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 | 点击: 1151 | 展开摘要
所谓「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 | 点击: 1107 | 展开摘要
最近公司服务器不太稳定,总是在凌晨某个时段突发高负载情况,因为客观环境比较复杂,所以很难猜测出到底是哪个进程出现了问题,加之故障发生时,通常我在睡觉,等我被报警短信吵醒,通过公司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 | 点击: 1437 | 展开摘要
话说这些天电视上正在热映《隋唐英雄》,虽然我并没有看,但是对当年田连元老先生的评书联播《隋唐演义》却是记忆犹新,特别是故事里面讲到的程咬金的三板斧:拍蒜瓣、戳脚指甲盖、胡椒面,每每听来总是让人忍俊不禁,不过这些貌似无厘头的招数在实战中却往往有出奇制胜的效果,由此可见简单实用永远都是硬道理,在当前这个倡导DevOps的年代,我们这些程序员自然也要学一些运维方面的本事才好安身立命,下面结合一些真实案例说说我在日常工作中常用的三板斧。

第一板斧:AWK

Web服务器负载飙升,猜

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

+0  记Redis那坑人的HGETALL

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

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

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

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

+0  Memcached二三事儿

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

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

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

+0  SWAP的罪与罚

Tag: Technical | Linux | SWAP
老王 发于 2012年11月08日 15:41 | 点击: 1327 | 展开摘要
说个案例:一台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 | 点击: 1412 | 展开摘要
通常,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

+1  实现一个简单的服务端推方案

Tag: Technical | Lua | Nginx
老王 发于 2012年09月28日 16:34 | 点击: 2289 | 展开摘要
客户端和服务端的交互有推和拉两种方式:如果是客户端拉的话,通常就是Polling;如果是服务端推的话,一般就是Comet,目前比较流行的Comet实现方式是Long Polling。

注:如果不清楚相关名词含义,可以参考:Browser 與 Server 持續同步的作法介紹。

先来看看Polling,它其实就是我们平常所说的轮询,大致如下所示:

Polling

因为服务端不会主动告诉客户端它是否有新数据,所以Polling的实时性较差。虽然可以通过加快轮询频率的方式来

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

+1  Nginx与Lua

Tag: Technical | Lua | Nginx
老王 发于 2012年08月31日 17:05 | 点击: 2803 | 展开摘要
火云邪神语录:天下武功,无坚不破,唯快不破!Nginx的看家本领就是速度,Lua的拿手好戏亦是速度,这两者的结合在速度上无疑有基因上的优势。

最先将Nginx,Lua组合到一起的是OpenResty,它有一个ngx_lua模块,将Lua嵌入到了Nginx里面;随后Tengine也包含了ngx_lua模块。至于二者的区别:OpenResty是Nginx的Bundle;而Tengine则是Nginx的Fork。值得一提的是,OpenResty和Tengine均是国人自己创建的项

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

+0  使用PHP解析行政区划代码

Tag: Technical | PHP
老王 发于 2012年07月31日 15:04 | 点击: 1119 | 展开摘要
话说这个PHP脚本我已经写过好多次了,不过由于国家统计局提供的数据格式有些许的变化,所以我又重写了一遍,问题既涉及到PHP,同时也涉及到MySQL,感觉很适合做面试题,这类问题往往最能反映出求职者的基本素质。

准备工作:需要下载最新县及县以上行政区划代码,并保存成data.txt文件,事先需要提醒的是,如果你在拷贝粘贴的过程中出现格式错乱的问题,可以试着先把拷贝的内容粘贴到Word,WPS等软件中,然后再重新拷贝粘贴到文本文件中,通常就可以了。

最新县及县以上行政区划代码

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