最新 | 最热门 | 最高评价

+0  闲扯Nginx的accept_mutex配置

Tag: Technical | Nginx
老王 发于 2013年08月24日 23:35 | 点击: 977 | 展开摘要
通常多数人不会注意Nginx的accept_mutex配置,不过实际上它对系统的吞吐量有一定的影响,今天生物钟紊乱睡不着觉,索性闲扯一下Nginx的accept_mutex配置。

让我们看看accept_mutex的意义:当一个新连接到达时,如果激活了accept_mutex,那么多个Worker将以串行方式来处理,其中有一个Worker会被唤醒,其他的Worker继续保持休眠状态;如果没有激活accept_mutex,那么所有的Worker都会被唤醒,不过只有一个Work

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

+0  初窥InnoDB的Memcached插件

Tag: Technical | Memcached | MySQL
老王 发于 2013年08月20日 17:32 | 点击: 1166 | 展开摘要
前些年,HandlerSocket的横空出世让人们眼前一亮,当时我还写了一篇文章介绍了其用法梗概,时至今日,由于种种原因,HandlerSocket并没有真正流行起来,不过庆幸的是MySQL官方受其启发,研发了基于InnoDB的Memcached插件,总算是在MySQL中延续了NoSQL的香火,以前单独架设Memcached服务器不仅浪费了内存,而且还必须自己维护数据的不一致问题,有了Memcached插件,这些问题都不存在了,而且借助MySQL本身的复制功能,我们可以说是变

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

+0  笨法算RPS

Tag: Technical | AWK | Gnuplot
老王 发于 2013年07月25日 23:22 | 点击: 993 | 展开摘要
计算RPS最简单的方法是用一天的总访问量除以一天的总秒数,不过这样得出的结论只是一个平均值,无法反映各个时间点的真实情况,真正有价值的是即时的RPS数据,如果有一个比较好的监控系统的话,这并不难,可惜我没有,而且实际上我遇到的问题还要更复杂些:大部分接口是PHP写的,少部分接口是LUA写的,为了更有针对性,需要分别计算PHP和LUA的即时RPS数据。

这里让我们假设Web日志已经做了按天分割,如果你不清楚怎么搞,可以参考我前一段时间写的:「被遗忘的Logrotate」,日志

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

+0  学习搭建Python环境

Tag: Technical | Python
老王 发于 2013年07月23日 22:09 | 点击: 1071 | 展开摘要
写了好多年的PHP代码,不免有些许的厌倦,是时候学一门新语言了,这就好比对男人来说,家里的女人看得久了,新鲜感荡然无存,自然想纳几房小妾,不过对于身处河东狮吼险境的我而言,此等美梦注定遥不可及,还是老老实实学编程吧,想当年我还像模像样的学过Python,可惜没坚持下来,希望这次能行。

闲言碎语不要讲,表一表Python的安装,操作系统为CentOS,因为版本旧,加之已经包含了Python-2.4.3,所以我换了一个路径安装了Python-2.7.5,目前此版本比较通用:

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

+0  请注意PHP程序里的敏感信息

Tag: Technical | PHP
老王 发于 2013年07月19日 17:01 | 点击: 1997 | 展开摘要
何为敏感信息?简单点来说就是你不想让别人知道的信息,比如说数据库的地址,用户名,密码等等,此类信息往往知道的人越少越好。

通常,PHP程序里的配置文件大致如下所示:

<?php

return array(
'database' => array(
'host' => '192.168.0.1',
'username' => 'administrator',
'password' =&

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

+0  MySQL优化的奇技淫巧之STRAIGHT_JOIN

Tag: Technical | MySQL
老王 发于 2013年06月04日 23:37 | 点击: 1548 | 展开摘要
最近没怎么搞SQL优化,碰巧数据库被慢查询搞挂了,于是拿来练练手。

问题

通过「SHOW FULL PROCESSLIST」语句很容易就能查到问题SQL,如下:

SELECT post.*
FROM post
INNER JOIN post_tag ON post.id = post_tag.post_id
WHERE post.status = 1 AND post_tag.tag_id = 123
ORDER BY post.created DESC
LIMIT 1

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

+0  如何诊断CDN故障

Tag: Technical | CDN
老王 发于 2013年05月23日 20:19 | 点击: 1160 | 展开摘要
某项目使用CDN做文件下载服务,最近不时有网友反馈下载出错,因为CDN是第三方提供的,且节点众多,所以诊断起来有点麻烦,必须想想招儿。

首当其冲的问题是如何确认CDN有哪些节点?

幸运的是通过阿里测提供的服务,我们能拿到这个IP列表,当然这个IP列表不可能百分百完整,不过应该包含了大部分的节点,有兴趣的可以参考百度的JQuery CDN例子。

需要说明的是阿里测偏重于测试国内的网络环境,如果你要测试的CDN偏重于国外的网络环境,可以考虑使用Just-Ping提供的服务。

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

+0  笨法玩秒杀

Tag: Technical | MySQL | Redis
老王 发于 2013年05月19日 22:07 | 点击: 1097 | 展开摘要
秒杀无异于一场自找的DDoS攻击,从这个角度来说:玩秒杀的电子商务网站,和那些不停喊着用力打我的受虐狂没有什么两样,因为他们都痛并快乐着。

在「中国数据库技术大会」上,淘宝分享了「秒杀场景下MySQL的低效」,详细分析了秒杀的技术难点及改进措施,简而言之,主要就是在高并发事务请求的情况下,数据库性能由于死锁检测等因素直线下降,在这种场景下,单纯的关闭死锁检测虽然可以提升一定的性能,但这顶多是治标而已,如何治本?淘宝给出来两个改进方法:

请求排队:如果请求一股脑的涌入数据库

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

+0  笨法玩秒杀

Tag: Technical | MySQL | Redis
老王 发于 2013年05月19日 22:07 | 点击: 1329 | 展开摘要
秒杀无异于一场自找的DDoS攻击,从这个角度来说:玩秒杀的电子商务网站,和那些不停喊着用力打我的受虐狂没有什么两样,因为他们都痛并快乐着。

在「中国数据库技术大会」上,淘宝分享了「秒杀场景下MySQL的低效」,详细分析了秒杀的技术难点及改进措施,简而言之,主要就是在高并发事务请求的情况下,数据库性能由于死锁检测等因素直线下降,在这种场景下,单纯的关闭死锁检测虽然可以提升一定的性能,但这顶多是治标而已,如何治本?淘宝给出来两个改进方法:

请求排队:如果请求一股脑的涌入数据库

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

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

Tag: Technical | MySQL
老王 发于 2013年05月03日 21:40 | 点击: 1221 | 展开摘要
我上一次遇到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 | 点击: 1209 | 展开摘要
我发现很多人的服务器上都运行着一些诸如每天切分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 | 点击: 1350 | 展开摘要
某手机应用市场项目,其中请求量最大的功能是查询升级接口,具体点来说:客户端会不定期的把手机中应用名称及其应用版本发送到服务端,服务端通过比较版本来判断客户端的应用是否需要升级,如果需要就返回若干项相关信息。通常,一台手机里会装几十个到上百个应用不等,当海量客户端一起请求时,服务端的压力可想而知。

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

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

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