<?xml version="1.0" encoding="UTF-8" ?>
<rss version="2.0">
<channel>
<title><![CDATA[回忆未来[张宴]]]></title> 
<link>http://blog.s135.com/index.php</link> 
<description><![CDATA[服务器系统架构与底层研发]]></description> 
<language>zh-cn</language> 
<copyright><![CDATA[回忆未来[张宴]]]></copyright>
<item>
<link>http://blog.s135.com/nginx_php_v6/</link>
<title><![CDATA[Nginx 0.8.x + PHP 5.2.13（FastCGI）搭建胜过Apache十倍的Web服务器（第6版）[原创]]]></title> 
<author>张宴 &lt;net@s135.com&gt;</author>
<category><![CDATA[Web服务器]]></category>
<pubDate>Thu, 04 Mar 2010 12:10:10 +0000</pubDate> 
<guid>http://blog.s135.com/nginx_php_v6/</guid> 
<description>
<![CDATA[ 
	　　[文章作者：张宴 本文版本：v6.0 最后修改：<span style="color: #FF0000;">2010.03.04</span> 转载请注明原文链接：<a href="http://blog.s135.com/nginx_php_v6/" target="_blank">http://blog.s135.com/nginx_php_v6/</a>]<br/><br/>　　前言：本文是我撰写的关于搭建“Nginx + PHP（FastCGI）”Web服务器的第6篇文章。本系列文章作为国内最早详细介绍 Nginx + PHP 安装、配置、使用的资料之一，为推动 Nginx 在国内的发展产生了积极的作用。本文可能不断更新小版本，请记住原文链接“<a href="http://blog.s135.com/nginx_php_v6/" target="_blank">http://blog.s135.com/nginx_php_v6/</a>”，获取最新内容。第6篇文章主要介绍了Nginx 0.8.x新的平滑重启方式，将PHP升级到了5.2.13，修正了PEAR问题。另将MySQL 5.1.x升级到了5.5.x系列，配置文件变更较大。<br/><br/>　　链接：《<a href="post/297/" target="_blank">2007年9月的第1版</a>》、《<a href="post/314/" target="_blank">2007年12月的第2版</a>》、《<a href="post/351/" target="_blank">2008年6月的第3版</a>》、《<a href="nginx_php_v4/" target="_blank">2008年8月的第4版</a>》、《<a href="nginx_php_v5/" target="_blank">2009年5月的第5版</a>》<br/><br/>　　<a href="http://blog.s135.com/attachment/200806/nginx.png" target="_blank"><img src="http://blog.s135.com/attachment/200806/nginx.png" class="insertimage" alt="点击在新窗口中浏览此图片" title="点击在新窗口中浏览此图片" border="0"/></a><br/><br/>　　<a href="http://www.nginx.net/" target="_blank">Nginx</a> ("engine x") 是一个高性能的 HTTP 和反向代理服务器，也是一个 IMAP/POP3/SMTP 代理服务器。 Nginx 是由 Igor Sysoev 为俄罗斯访问量第二的 Rambler.ru 站点开发的，它已经在该站点运行超过三年了。Igor 将源代码以类BSD许可证的形式发布。<br/><br/>　　Nginx 超越 Apache 的高性能和稳定性，使得国内使用 Nginx 作为 Web 服务器的网站也越来越多，其中包括<a href="http://blog.sina.com.cn/" target="_blank">新浪博客</a>、<a href="http://v.sina.com.cn/" target="_blank">新浪播客</a>、<a href="http://news.163.com/" target="_blank">网易新闻</a>、<a href="http://www.qq.com/" target="_blank">腾讯网</a>、<a href="http://blog.sohu.com/" target="_blank">搜狐博客</a>等门户网站频道，<a href="http://www.6.cn/" target="_blank">六间房</a>、<a href="http://www.56.com/" target="_blank">56.com</a>等视频分享网站，<a href="http://www.discuz.net/" target="_blank">Discuz!官方论坛</a>、<a href="http://www.newsmth.net/" target="_blank">水木社区</a>等知名论坛，<a href="http://www.sdo.com/" target="_blank">盛大在线</a>、<a href="http://www.xoyo.com/" target="_blank">金山逍遥网</a>等网络游戏网站，<a href="http://www.douban.com/" target="_blank">豆瓣</a>、<a href="http://www.renren.com/" target="_blank">人人网</a>、<a href="http://www.yupoo.com/" target="_blank">YUPOO相册</a>、<a href="http://www.iciba.com/" target="_blank">金山爱词霸</a>、<a href="http://www.xunlei.com/" target="_blank">迅雷在线</a>等新兴Web 2.0网站。<br/><br/><hr/><br/>　　Nginx 的官方中文维基：<a href="http://wiki.nginx.org/NginxChs" target="_blank">http://wiki.nginx.org/NginxChs</a><br/><br/><hr/><br/>　　在高并发连接的情况下，Nginx是Apache服务器不错的替代品。Nginx同时也可以作为7层负载均衡服务器来使用。根据我的测试结果，<strong>Nginx 0.8.34 + PHP 5.2.13 (FastCGI) 可以承受3万以上的并发连接数，相当于同等环境下Apache的10倍</strong>。<br/><br/>　　根据我的经验，4GB内存的服务器+Apache（prefork模式）一般只能处理3000个并发连接，因为它们将占用3GB以上的内存，还得为系统预留1GB的内存。我曾经就有两台Apache服务器，因为在配置文件中设置的MaxClients为4000，当Apache并发连接数达到3800时，导致服务器内存和Swap空间用满而崩溃。<br/><br/>　　而这台 Nginx 0.8.34 + PHP 5.2.13 (FastCGI) 服务器在3万并发连接下，开启的10个Nginx进程消耗150M内存（15M*10=150M），开启的64个php-cgi进程消耗1280M内存（20M*64=1280M），加上系统自身消耗的内存，总共消耗不到2GB内存。如果服务器内存较小，完全可以只开启25个php-cgi进程，这样php-cgi消耗的总内存数才500M。<br/><br/>　　在3万并发连接下，访问Nginx 0.8.34 + PHP 5.2.13 (FastCGI) 服务器的PHP程序，仍然速度飞快。下图为Nginx的状态监控页面，显示的活动连接数为28457（关于Nginx的监控页配置，会在本文接下来所给出的Nginx配置文件中写明）：<br/><br/>　　<a href="http://blog.s135.com/attachment/200712/nginx_status.png" target="_blank"><img src="http://blog.s135.com/attachment/200712/nginx_status.png" class="insertimage" alt="点击在新窗口中浏览此图片" title="点击在新窗口中浏览此图片" border="0"/></a><br/><br/>　　我生产环境下的两台Nginx + PHP5（FastCGI）服务器，跑多个一般复杂的纯PHP动态程序，单台Nginx + PHP5（FastCGI）服务器跑PHP动态程序的处理能力已经超过“<span style="color: #FF0000;">700次请求/秒</span>”，相当于每天可以承受6000万（700*60*60*24=60480000）的访问量（<a href="read.php/334.htm" target="_blank">更多信息见此</a>），而服务器的系统负载也不高：<br/><br/>　　<a href="http://blog.s135.com/attachment/200803/nginx_php_la.gif" target="_blank"><img src="http://blog.s135.com/attachment/200803/nginx_php_la.gif" class="insertimage" alt="点击在新窗口中浏览此图片" title="点击在新窗口中浏览此图片" border="0"/></a><br/><br/>　　2009年9月3日下午2：30，金山游戏《剑侠情缘网络版叁》临时维护1小时（<a href="http://kefu.xoyo.com/gonggao/jx3/2009-09-03/750438.shtml" target="_blank">http://kefu.xoyo.com/gonggao/jx3/2009-09-03/750438.shtml</a>），大量玩家上官网，论坛、评论、客服等动态应用Nginx服务器集群，每台服务器的Nginx活动连接数达到2.8万，这是笔者遇到的Nginx生产环境最高并发值。<br/><br/>　　<a href="http://blog.s135.com/attachment/200909/nginx_c30k.png" target="_blank"><img src="http://blog.s135.com/attachment/200909/nginx_c30k.png" class="insertimage" alt="点击在新窗口中浏览此图片" title="点击在新窗口中浏览此图片" border="0"/></a><br/><br/><hr/><br/>　　下面是用100个并发连接分别去压生产环境中同一负载均衡器VIP下、提供相同服务的两台服务器，一台为Nginx，另一台为Apache，Nginx每秒处理的请求数是Apache的两倍多，Nginx服务器的系统负载、CPU使用率远低于Apache：<br/><br/>　　你可以将连接数开到10000～30000，去压Nginx和Apache上的phpinfo.php，这是用浏览器访问Nginx上的phpinfo.php一切正常，而访问Apache服务器的phpinfo.php，则是该页无法显示。4G内存的服务器，即使再优化，Apache也很难在“webbench -c 30000 -t 60 <a href="http://xxx.xxx.xxx.xxx/phpinfo.php" target="_blank">http://xxx.xxx.xxx.xxx/phpinfo.php</a>”的压力情况下正常访问，而调整参数优化后的Nginx可以。<br/><br/>　　webbench 下载地址：<a href="http://blog.s135.com/post/288/" target="_blank">http://blog.s135.com/post/288/</a><br/><br/>　　注意：webbench 做压力测试时，该软件自身也会消耗CPU和内存资源，为了测试准确，请将 webbench 安装在别的服务器上。<br/><br/>　　测试结果：##### Nginx + PHP #####<br/><div class="quote"><div class="quote-title">引用</div><div class="quote-content">[root@localhost webbench-1.5]# webbench -c 100 -t 30 <a href="http://192.168.1.21/phpinfo.php" target="_blank">http://192.168.1.21/phpinfo.php</a><br/>Webbench - Simple Web Benchmark 1.5<br/>Copyright (c) Radim Kolar 1997-2004, GPL Open Source Software.<br/><br/>Benchmarking: GET <a href="http://192.168.1.21/phpinfo.php" target="_blank">http://192.168.1.21/phpinfo.php</a><br/>100 clients, running 30 sec.<br/><br/>Speed=102450 pages/min, 16490596 bytes/sec.<br/>Requests: 51225 susceed, 0 failed.<br/><br/>top - 14:06:13 up 27 days,&nbsp;&nbsp;2:25,&nbsp;&nbsp;2 users,&nbsp;&nbsp;load average: 14.57, 9.89, 6.51<br/>Tasks: 287 total,&nbsp;&nbsp; 4 running, 283 sleeping,&nbsp;&nbsp; 0 stopped,&nbsp;&nbsp; 0 zombie<br/>Cpu(s): 49.9% us,&nbsp;&nbsp;6.7% sy,&nbsp;&nbsp;0.0% ni, 41.4% id,&nbsp;&nbsp;1.1% wa,&nbsp;&nbsp;0.1% hi,&nbsp;&nbsp;0.8% si<br/>Mem:&nbsp;&nbsp; 6230016k total,&nbsp;&nbsp;2959468k used,&nbsp;&nbsp;3270548k free,&nbsp;&nbsp; 635992k buffers<br/>Swap:&nbsp;&nbsp;2031608k total,&nbsp;&nbsp;&nbsp;&nbsp; 3696k used,&nbsp;&nbsp;2027912k free,&nbsp;&nbsp;1231444k cached</div></div><br/><br/>　　测试结果：#####&nbsp;&nbsp;Apache + PHP #####<br/><div class="quote"><div class="quote-title">引用</div><div class="quote-content">[root@localhost webbench-1.5]# webbench -c 100 -t 30 <a href="http://192.168.1.27/phpinfo.php" target="_blank">http://192.168.1.27/phpinfo.php</a><br/>Webbench - Simple Web Benchmark 1.5<br/>Copyright (c) Radim Kolar 1997-2004, GPL Open Source Software.<br/><br/>Benchmarking: GET <a href="http://192.168.1.27/phpinfo.php" target="_blank">http://192.168.1.27/phpinfo.php</a><br/>100 clients, running 30 sec.<br/><br/>Speed=42184 pages/min, 31512914 bytes/sec.<br/>Requests: 21092 susceed, 0 failed.<br/><br/>top - 14:06:20 up 27 days,&nbsp;&nbsp;2:13,&nbsp;&nbsp;2 users,&nbsp;&nbsp;load average: 62.15, 26.36, 13.42<br/>Tasks: 318 total,&nbsp;&nbsp; 7 running, 310 sleeping,&nbsp;&nbsp; 0 stopped,&nbsp;&nbsp; 1 zombie<br/>Cpu(s): 80.4% us, 10.6% sy,&nbsp;&nbsp;0.0% ni,&nbsp;&nbsp;7.9% id,&nbsp;&nbsp;0.1% wa,&nbsp;&nbsp;0.1% hi,&nbsp;&nbsp;0.9% si<br/>Mem:&nbsp;&nbsp; 6230016k total,&nbsp;&nbsp;3075948k used,&nbsp;&nbsp;3154068k free,&nbsp;&nbsp; 379896k buffers<br/>Swap:&nbsp;&nbsp;2031608k total,&nbsp;&nbsp;&nbsp;&nbsp;12592k used,&nbsp;&nbsp;2019016k free,&nbsp;&nbsp;1117868k cached</div></div><br/><br/><hr/><br/>　　为什么Nginx的性能要比Apache高得多？这得益于Nginx使用了最新的epoll（Linux 2.6内核）和kqueue（freebsd）网络I/O模型，而Apache则使用的是传统的select模型。目前Linux下能够承受高并发访问的Squid、Memcached都采用的是epoll网络I/O模型。<br/><br/>　　处理大量的连接的读写，Apache所采用的select网络I/O模型非常低效。下面用一个比喻来解析Apache采用的select模型和Nginx采用的epoll模型进行之间的区别：<br/><br/>　　假设你在大学读书，住的宿舍楼有很多间房间，你的朋友要来找你。select版宿管大妈就会带着你的朋友挨个房间去找，直到找到你为止。而epoll版宿管大妈会先记下每位同学的房间号，你的朋友来时，只需告诉你的朋友你住在哪个房间即可，不用亲自带着你的朋友满大楼找人。如果来了10000个人，都要找自己住这栋楼的同学时，select版和epoll版宿管大妈，谁的效率更高，不言自明。同理，在高并发服务器中，轮询I/O是最耗时间的操作之一，select和epoll的性能谁的性能更高，同样十分明了。<br/><br/><hr/><br/>　　安装步骤：<br/>　　（系统要求：Linux 2.6+ 内核，本文中的Linux操作系统为CentOS 5.3，另在RedHat AS4上也安装成功）<br/><br/>............<br/><br/>Tags - <a href="http://blog.s135.com/tags/nginx/" rel="tag">nginx</a> , <a href="http://blog.s135.com/tags/php/" rel="tag">php</a> , <a href="http://blog.s135.com/tags/mysql/" rel="tag">mysql</a> , <a href="http://blog.s135.com/tags/linux/" rel="tag">linux</a> , <a href="http://blog.s135.com/tags/apache/" rel="tag">apache</a> , <a href="http://blog.s135.com/tags/html/" rel="tag">html</a> , <a href="http://blog.s135.com/tags/centos/" rel="tag">centos</a> , <a href="http://blog.s135.com/tags/http/" rel="tag">http</a> , <a href="http://blog.s135.com/tags/apc/" rel="tag">apc</a> , <a href="http://blog.s135.com/tags/xcache/" rel="tag">xcache</a> , <a href="http://blog.s135.com/tags/memcached/" rel="tag">memcached</a> , <a href="http://blog.s135.com/tags/httpd/" rel="tag">httpd</a> , <a href="http://blog.s135.com/tags/memcache/" rel="tag">memcache</a> , <a href="http://blog.s135.com/tags/epoll/" rel="tag">epoll</a>
]]>
</description>
</item><item>
<link>http://blog.s135.com/android_server/</link>
<title><![CDATA[Google Android 手机上的服务器系统运维工具[原创]]]></title> 
<author>张宴 &lt;net@s135.com&gt;</author>
<category><![CDATA[其他Unix技术]]></category>
<pubDate>Wed, 10 Feb 2010 09:13:50 +0000</pubDate> 
<guid>http://blog.s135.com/android_server/</guid> 
<description>
<![CDATA[ 
	　　今天是节前最后一天上班。今年春节回老婆的老家过年，没有电脑和网络，如果服务器有什么问题，就希望借助 Google Android 手机上的一些小工具来处理了。<br/><br/>　　我的G1手机装了<a href="http://www.hiapk.com/bbs/forum-135-1.html" target="_blank">HiAPK 的 Android 1.6 Rom</a>，自带了PPTP/L2TP/IPSec VPN的支持，可以先通过它拨入服务器的VPN内网。<br/><br/>　　<a href="http://blog.s135.com/attachment/201002/g02.png" target="_blank"><img src="http://blog.s135.com/attachment/201002/g02.png" class="insertimage" alt="点击在新窗口中浏览此图片" title="点击在新窗口中浏览此图片" border="0"/></a> <a href="http://blog.s135.com/attachment/201002/g03.png" target="_blank"><img src="http://blog.s135.com/attachment/201002/g03.png" class="insertimage" alt="点击在新窗口中浏览此图片" title="点击在新窗口中浏览此图片" border="0"/></a><br/><br/><hr/><br/>　　<strong>SSH工具：connectbot</strong><br/>　　下载地址：<a href="http://code.google.com/p/connectbot/" target="_blank">http://code.google.com/p/connectbot/</a><br/><br/>　　用它可以登录Linux/Unix服务器，进行相关操作。<br/><br/>　　<a href="http://blog.s135.com/attachment/201002/g04.png" target="_blank"><img src="http://blog.s135.com/attachment/201002/g04.png" class="insertimage" alt="点击在新窗口中浏览此图片" title="点击在新窗口中浏览此图片" border="0"/></a><br/><br/>............<br/><br/>Tags - <a href="http://blog.s135.com/tags/android/" rel="tag">android</a> , <a href="http://blog.s135.com/tags/server/" rel="tag">server</a> , <a href="http://blog.s135.com/tags/%25E7%25B3%25BB%25E7%25BB%259F%25E8%25BF%2590%25E7%25BB%25B4/" rel="tag">系统运维</a> , <a href="http://blog.s135.com/tags/%25E6%259C%258D%25E5%258A%25A1%25E5%2599%25A8/" rel="tag">服务器</a>
]]>
</description>
</item><item>
<link>http://blog.s135.com/sphinx_search/</link>
<title><![CDATA[基于Sphinx构建准实时更新的分布式通用搜索引擎平台[原创]]]></title> 
<author>张宴 &lt;net@s135.com&gt;</author>
<category><![CDATA[搜索引擎技术]]></category>
<pubDate>Fri, 05 Feb 2010 00:50:25 +0000</pubDate> 
<guid>http://blog.s135.com/sphinx_search/</guid> 
<description>
<![CDATA[ 
	　　[文章作者：张宴 本文版本：v1.0 最后修改：2010.02.05 转载请注明原文链接：<a href="http://blog.s135.com/sphinx_search/" target="_blank">http://blog.s135.com/sphinx_search/</a>]<br/><br/>　　前言：<br/><br/>　　2008年7月，我写过一篇文章《<a href="http://blog.s135.com/post/360/" target="_blank">基于Sphinx+MySQL的千万级数据全文检索（搜索引擎）架构设计</a>》。有不少网友希望阅读全文，我将该文档整理了一下，分享出来。文档解压后大小为7.33M，共19页。<br/><br/>　　<strong>本站下载地址：</strong> <a href="http://blog.s135.com/book/sphinx/sphinx_mysql.zip" target="_blank">http://blog.s135.com/book/sphinx/sphinx_mysql.zip</a><br/><br/>　　<strong>新浪下载分流：</strong> <a href="http://ishare.iask.sina.com.cn/f/6728201.html" target="_blank">http://ishare.iask.sina.com.cn/f/6728201.html</a><br/><br/>　　上述文档架构存在的局限，我在2008年12月的文章《<a href="http://blog.s135.com/post/385/" target="_blank">亿级数据的高并发通用搜索引擎架构设计</a>》中已经指出：一是MySQL本身的并发能力有限，在200～300个并发连接下，查询和更新就比较慢了；二是由于MySQL表的主键与Sphinx索引的ID一一对应，从而无法跨多表建立整站查询，而且新增加类别还得修改配置文件，比较麻烦；三是因为和MySQL集成，无法发挥出Sphinx的优势。虽然如此，但对于一些写入量不大的搜索应用，已经足够了，或许对很多人会有帮助。<br/><br/><hr/><br/>　　正文：<br/><br/>　　在这之后，本人基于《<a href="http://blog.s135.com/post/385/" target="_blank">亿级数据的高并发通用搜索引擎架构设计</a>》开发的Sphinx分布式通用站内搜索引擎平台，已经在生产环境运行9个月以上，经过运营中的不断完善与改进，目前已形成了一套可扩展的分布式通用站内搜索引擎框架。CMS、视频、论坛等产品发生的增、删、改操作，文本内容实时写入自行开发的 <a href="http://blog.s135.com/httpsqs" target="_blank">HTTPSQS</a> 高性能简单消息队列服务，通过队列控制器更新索引和存储。提供支持XML、JSON的API查询接口，支持亿级数据的索引、分布式、中文分词、高亮显示、自动摘要、准实时（1分钟内）增量索引更新。<br/><br/>　　<a href="http://blog.s135.com/attachment/201002/search_system.png" target="_blank"><img src="http://blog.s135.com/attachment/201002/search_system.png" class="insertimage" alt="点击在新窗口中浏览此图片" title="点击在新窗口中浏览此图片" border="0"/></a><br/><br/>　　下面是Sphinx新的搜索架构中技术关键点实现方式的一些介绍，与大家分享、交流一下：<br/><br/>　　<strong>1、一元分词和中文分词的结合：</strong><br/><br/>　　①、一元分词位于索引更新模块。Sphinx索引引擎对于CJK（中日韩）语言（必须是UTF-8编码）支持一元切分，假设【反恐行动是国产主视角射击网络游戏】这段文字，Sphinx会将其切成【反 恐 行 动 是 国 产 主 视 角 射 击 网 络 游 戏】，然后对每个字建立反向索引。如果用这句话中包含的字组成一个不存在的词语，例如【恐动】，也会被搜索到，所以搜索时，需要加引号，例如搜索【"反恐行动"】，就能完全匹配连在一起的四个字，不连续的【"恐动"】就不会被搜索到。但是，这样还有一个问题，搜索【"反恐行动游戏"】或【"国产网络游戏"】就会搜索不到。对于这个问题，采用位于搜索查询模块的中文分词来处理。<br/><br/>　　sphinx.conf配置文件中关于UTF-8中文一元分词的配置如下：<br/><div style="border-left: 0px dashed #D6C094; margin: 5px; padding: 3px; margin-bottom:0px; border: 1px dashed #00a0c6; background-color: #ffffff;">...省略...<br/>index t_source_main<br/>&#123;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;source&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;= t_source_main<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;path&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;= /data0/search/sphinx/data/t_source_main<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;docinfo&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; = extern<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;mlock&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; = 0<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;morphology&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;= none<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;min_word_len&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;= 1<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;charset_type&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;= utf-8<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;min_prefix_len&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;= 0<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;html_strip&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;= 1<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;charset_table&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; = 0..9, A..Z->a..z, _, a..z, U+410..U+42F->U+430..U+44F, U+430..U+44F<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ngram_len&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; = 1<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ngram_chars&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; = U+3000..U+2FA1F<br/>&#125;<br/>...省略...</div><br/><br/>　　②、中文分词位于搜索查询模块。搜索“反恐行动游戏”、“国产网络游戏”，先调用独立的中文分词系统，分别切分为“反恐行动 游戏”、“国产 网络游戏”，这时候，再给以空格分隔的词语加上引号，去Sphinx搜索【"反恐行动" "游戏"】或【"国产" "网络游戏"】，就能搜索到这条记录了。中文分词词库发生增、删、改，无需重建整个Sphinx搜索索引。<br/><br/><hr/><br/>　　<strong>2、使用自行开发的HTTPSQS（<a href="http://code.google.com/p/httpsqs" target="_blank">http://code.google.com/p/httpsqs</a>）开源简单队列服务程序，来缓冲高并发数据写入</strong><br/><br/>　　新闻、论坛帖子、客服公告、SNS社区等发生的增、删、改操作，文本内容通过更新接口实时写入HTTPSQS队列，再通过队列控制器更新到Sphinx搜索引擎索引中。<br/><br/><hr/><br/>　　<strong>3、Sphinx不能严格按照字段排序的小问题</strong><br/><br/>　　如果不想使用权重，只希望严格按照时间、主键等排序，而匹配模式（Matching modes）又为非SPH_MATCH_BOOLEAN时（比较常用的是SPH_MATCH_ALL、SPH_MATCH_EXTENDED），Sphinx搜索结果在某一页中的排序会不太准确。例如：按照UNIX时间戳倒序排序，0,20为第一页，20,40为第二页，第一页的最小时间戳一定会大于第二页的最大时间戳，但是，第一页中的0,20条记录却不会严格按照时间戳排序，第二页亦是如此。因此，如果需要精确排序，用户翻到搜索结果的某一页，就需要对Sphinx在某一搜索结果页中的记录另行再排序，在我的这套搜索架构中，这一再排序操作由search.php查询接口使用array_multisort()函数处理。一般情况下，一页只会显示5～30条记录，因此，只对几十条记录采用PHP再排序，速度也是非常快的。<br/><br/><hr/><br/>　　<strong>4、队列控制器中“时间控制”与“数量控制”相结合，实现搜索索引的1分钟内准实时更新：</strong><br/><br/>　　①、Sphinx 0.9.9生产环境的建索引速度大约在5.5 Mbytes/秒、6400文档/秒。队列控制器可以设置10秒钟更新一次增量索引，只要Sphinx增量索引数据源的文档数在38万以内，就能保证增量索引在1～60秒内得到更新，这是从“时间”上进行控制。<br/><br/>　　②、为了避免增量索引数据源的文档数增长到38万，队列控制器在增量索引数据源的文档数超过1万时，还将激活增量索引合并入主索引的操作，合并完成的文档将从增量索引数据源中删除，这是从“数量”上进行控制。<br/><br/>............<br/><br/>Tags - <a href="http://blog.s135.com/tags/sphinx/" rel="tag">sphinx</a> , <a href="http://blog.s135.com/tags/search/" rel="tag">search</a> , <a href="http://blog.s135.com/tags/api/" rel="tag">api</a>
]]>
</description>
</item><item>
<link>http://blog.s135.com/domain_transfer/</link>
<title><![CDATA[我的域名注册商由“新网”转移到美国Godaddy的全过程[原创]]]></title> 
<author>张宴 &lt;net@s135.com&gt;</author>
<category><![CDATA[电脑杂谈]]></category>
<pubDate>Thu, 28 Jan 2010 12:05:09 +0000</pubDate> 
<guid>http://blog.s135.com/domain_transfer/</guid> 
<description>
<![CDATA[ 
	　　从2010年1月16日向新网代理商索要域名转移密码，到2010年1月27日13:55分Whois信息中的域名注册商变更为Godaddy，历时11天，我的域名 s135.com 成功转移到国外。<br/><br/>　　<strong>一、为什么要把域名注册商从国内转移到国外：</strong><br/><br/>　　<strong>1、域名完全控制权：</strong>国内大多数的顶级域名注册商拿着本该属于域名所有者的“域名转移密码”，设置各种条件（例如：收费、续费一年才给密码、邮寄证明材料等）提高域名所有者取得“域名转移密码”的难度，甚至以种种借口阻止您获知转移密码。国内的域名注册商只能设置两个DNS服务器地址，而国外域名注册商可以设置多个DNS地址。在国外域名注册商，你拥有域名的完全控制权与转移权，域名转移、域名过户完全可以由你在线操作，免费进行。<br/><br/>　　<strong>2、价格与安全性：</strong>国内的域名注册商域名注册、续费价格昂贵（.com域名100元以上），在代理商处虽然便宜一些（大约60元/年），但域名控制权更少，遇到黑心代理，说不定你辛苦经营的域名，某一天就成别人的了。在国外注册、续费域名（例如在Godaddy用优惠码只需7美元/年，不到50元人民币/年）。<br/><br/>　　<strong>3、最主要的原因：</strong>向“clientHold”说“No”。最近，有关部门发现了比去机房拔网线更便捷的方法，那就是通知国内的域名注册商对域名进行“clientHold（域名暂停解析）”，clientHold是注册商用来禁用一个域名最简单的手段。今年以来，发生了多起国内知名网站被域名注册商“clientHold”的事件：<br/><br/>　　[2010-01-05] 新网暂停解析51.com及IT168.com等网站域名：<a href="http://tech.163.com/10/0105/17/5S9GP09A000915BF.html" target="_blank">http://tech.163.com/10/0105/17/5S9GP09A000915BF.html</a><br/>　　[2010-01-05] 网站域名被屏蔽 百万用户上不了"博客大巴"：<a href="http://it.people.com.cn/GB/42891/42894/10729530.html" target="_blank">http://it.people.com.cn/GB/42891/42894/10729530.html</a><br/>　　[2010-01-21] TechWeb.com.cn域名停止解析：<a href="http://it.sohu.com/20100121/n269753011.shtml" target="_blank">http://it.sohu.com/20100121/n269753011.shtml</a><br/>　　[2010-01-25] 篱笆网遭新网停止域名解析服务：<a href="http://tech.163.com/10/0126/10/5TUR6JP8000915BF.html" target="_blank">http://tech.163.com/10/0126/10/5TUR6JP8000915BF.html</a><br/>　　[2010-01-27] 济南日报报业集团主办的“舜网”被万网暂停域名解析：<a href="http://china.huanqiu.com/roll/2010-01/704184.html" target="_blank">http://china.huanqiu.com/roll/2010-01/704184.html</a><br/><br/>　　由公司、专业团队运营的网站尚且难逃域名被暂停解析的命运，那么微弱的个人网站域名有如“兵在其颈”，一旦被“clientHold”，也许就是永久。防止域名被Hold的方法是将域名转移到国外的域名注册商，域名解析采用国外域名注册商的DNS服务器、自建DNS服务器或者第三方DNS服务器（例如：<a href="http://www.dnspod.com" target="_blank">dnspod.com</a>）均可。<br/><br/>　　4、.com、.net、.org等国际域名或其他国家域名，才能转移到国外域名注册商，拥有“.cn”域名的朋友，听天由命吧。<br/><br/><hr/><br/>　　<strong>二、转移到国外哪家域名注册商呢？</strong><br/><br/>　　<strong>1、企业的选择：</strong> NETWORK SOLUTIONS, LLC （<a href="http://www.networksolutions.com" target="_blank">http://www.networksolutions.com</a>）<br/><br/>　　通过“<a href="http://who.is/" target="_blank">http://who.is/</a>”查询一下，可以发现，新浪sina.com、网易163.com、网易邮箱126.com、搜狐sohu.com、搜狗sogou.com、腾讯搜搜soso.com、金山kingsoft.com、金山逍遥xoyo.com、中华网china.com，就连国字号的中央电视台cctv.com、新华网xinhuanet.com，域名都是在国外域名注册商处注册的，而且注册商都是同一家：“NETWORK SOLUTIONS, LLC”。<br/><br/>　　Network Solutions 成立于1979年，有着30年的历史，是全世界最早提供域名注册的公司。1993年与美国国家科学基金会签定协议，承担InterNIC的域名注册服务和信息服务工作并且开展网络技术服务、咨询等其它业务，现有超过700万域名是在其注册的。<br/><br/>　　因此，域名转移到Network Solutions，相对来说是最安全的。但是，它的价格较贵，例如.com域名差不多要30美元/年，因此适合企业。当然，如果你有钱，也不妨选择Network Solutions。<br/><br/>　　<strong>2、个人的选择：</strong> <a href="https://www.godaddy.com" target="_blank">Godaddy.com</a>、<a href="http://www.name.com" target="_blank">Name.com</a>、<a href="http://www.enom.com" target="_blank">Enom.com</a><br/><br/>　　Godaddy 是全球最大的 ICANN 域名注册机构，占据了18%的市场份额。Godaddy 注册、转入、续费域名可以搜寻各种优惠码，.com域名使用优惠码只需7美元/年。最重要的是，它支持使用“支付宝”以人民币购汇方式付款。<br/><br/>　　eNom 于1997年在美国华盛顿成立，是全球第二大 ICANN 域名注册机构，全球最大的域名抢注机构之一。<br/><br/>　　Name.com 也是一家价格较低的不错域名注册商。<br/><br/><hr/><br/>　　<strong>三、转移前工作：索取域名转移密码</strong><br/><br/>............<br/>
]]>
</description>
</item><item>
<link>http://blog.s135.com/nginx_cache/</link>
<title><![CDATA[使用Nginx的proxy_cache缓存功能取代Squid[原创]]]></title> 
<author>张宴 &lt;net@s135.com&gt;</author>
<category><![CDATA[Cache与存储]]></category>
<pubDate>Mon, 11 Jan 2010 10:20:28 +0000</pubDate> 
<guid>http://blog.s135.com/nginx_cache/</guid> 
<description>
<![CDATA[ 
	　　[文章作者：张宴 本文版本：v1.2 最后修改：2009.01.12 转载请注明原文链接：<a href="http://blog.s135.com/nginx_cache/" target="_blank">http://blog.s135.com/nginx_cache/</a>]<br/><br/>　　Nginx从0.7.48版本开始，支持了类似Squid的缓存功能。这个缓存是把URL及相关组合当作Key，用md5编码哈希后保存在硬盘上，所以它可以支持任意URL链接，同时也支持404/301/302这样的非200状态码。虽然目前官方的Nginx Web缓存服务只能为指定URL或状态码设置过期时间，不支持类似Squid的PURGE指令，手动清除指定缓存页面，但是，通过一个第三方的Nginx模块，可以清除指定URL的缓存。<br/><br/>　　Nginx的Web缓存服务主要由proxy_cache相关指令集和fastcgi_cache相关指令集构成，前者用于反向代理时，对后端内容源服务器进行缓存，后者主要用于对FastCGI的动态程序进行缓存。两者的功能基本上一样。<br/><br/>　　最新的Nginx 0.8.32版本，proxy_cache和fastcgi_cache已经比较完善，加上第三方的ngx_cache_purge模块（用于清除指定URL的缓存），已经可以完全取代Squid。我们已经在生产环境使用了 Nginx 的 proxy_cache 缓存功能超过两个月，十分稳定，速度不逊于 Squid。<br/><br/>　　在功能上，Nginx已经具备Squid所拥有的Web缓存加速功能、清除指定URL缓存的功能。而在性能上，Nginx对多核CPU的利用，胜过Squid不少。另外，在反向代理、负载均衡、健康检查、后端服务器故障转移、Rewrite重写、易用性上，Nginx也比Squid强大得多。这使得一台Nginx可以同时作为“负载均衡服务器”与“Web缓存服务器”来使用。<br/>　　<br/><hr/><br/>　　1、Nginx 负载均衡与缓存服务器在 Linux 下的编译安装：<br/><div style="border-left: 0px dashed #D6C094; margin: 5px; padding: 3px; margin-bottom:0px; border: 1px dashed #00a0c6; background-color: #ffffff;">ulimit -SHn 65535<br/>wget <a href="ftp://ftp.csx.cam.ac.uk/pub/software/programming/pcre/pcre-8.00.tar.gz" target="_blank">ftp://ftp.csx.cam.ac.uk/pub/software/programming/pcre/pcre-8.00.tar.gz</a><br/>tar zxvf pcre-8.00.tar.gz<br/>cd pcre-8.00/<br/>./configure<br/>make && make install<br/>cd ../<br/><br/>wget <a href="http://labs.frickle.com/files/ngx_cache_purge-1.0.tar.gz" target="_blank">http://labs.frickle.com/files/ngx_cache_purge-1.0.tar.gz</a><br/>tar zxvf ngx_cache_purge-1.0.tar.gz<br/><br/>wget <a href="http://nginx.org/download/nginx-0.8.32.tar.gz" target="_blank">http://nginx.org/download/nginx-0.8.32.tar.gz</a><br/>tar zxvf nginx-0.8.32.tar.gz<br/>cd nginx-0.8.32/<br/>./configure --user=www --group=www --add-module=../ngx_cache_purge-1.0 --prefix=/usr/local/webserver/nginx --with-http_stub_status_module --with-http_ssl_module<br/>make && make install<br/>cd ../</div><br/><hr/><br/>　　2、/usr/local/webserver/nginx/conf/nginx.conf 配置文件内容如下：<br/><div class="code">user&nbsp;&nbsp;www www;<br/><br/>worker_processes 8;<br/><br/>error_log&nbsp;&nbsp;/usr/local/webserver/nginx/logs/nginx_error.log&nbsp;&nbsp;crit;<br/><br/>pid&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;/usr/local/webserver/nginx/nginx.pid;<br/><br/>#Specifies the value for maximum file descriptors that can be opened by this process. <br/>worker_rlimit_nofile 65535;<br/><br/>events <br/>&#123;<br/>&nbsp;&nbsp;use epoll;<br/>&nbsp;&nbsp;worker_connections 65535;<br/>&#125;<br/><br/>http <br/>&#123;<br/>&nbsp;&nbsp;include&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; mime.types;<br/>&nbsp;&nbsp;default_type&nbsp;&nbsp;application/octet-stream;<br/><br/>&nbsp;&nbsp;charset&nbsp;&nbsp;utf-8;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br/>&nbsp;&nbsp;server_names_hash_bucket_size 128;<br/>&nbsp;&nbsp;client_header_buffer_size 32k;<br/>&nbsp;&nbsp;large_client_header_buffers 4 32k;<br/>&nbsp;&nbsp;client_max_body_size 300m;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br/>&nbsp;&nbsp;sendfile on;<br/>&nbsp;&nbsp;tcp_nopush&nbsp;&nbsp;&nbsp;&nbsp; on;<br/><br/>&nbsp;&nbsp;keepalive_timeout 60;<br/><br/>&nbsp;&nbsp;tcp_nodelay on;<br/><br/>&nbsp;&nbsp;client_body_buffer_size&nbsp;&nbsp;512k;<br/>&nbsp;&nbsp;proxy_connect_timeout&nbsp;&nbsp;&nbsp;&nbsp;5;<br/>&nbsp;&nbsp;proxy_read_timeout&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 60;<br/>&nbsp;&nbsp;proxy_send_timeout&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 5;<br/>&nbsp;&nbsp;proxy_buffer_size&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;16k;<br/>&nbsp;&nbsp;proxy_buffers&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;4 64k;<br/>&nbsp;&nbsp;proxy_busy_buffers_size 128k;<br/>&nbsp;&nbsp;proxy_temp_file_write_size 128k;<br/><br/>&nbsp;&nbsp;gzip on;<br/>&nbsp;&nbsp;gzip_min_length&nbsp;&nbsp;1k;<br/>&nbsp;&nbsp;gzip_buffers&nbsp;&nbsp;&nbsp;&nbsp; 4 16k;<br/>&nbsp;&nbsp;gzip_http_version 1.1;<br/>&nbsp;&nbsp;gzip_comp_level 2;<br/>&nbsp;&nbsp;gzip_types&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; text/plain application/x-javascript text/css application/xml;<br/>&nbsp;&nbsp;gzip_vary on;<br/><br/>&nbsp;&nbsp;#注：proxy_temp_path和proxy_cache_path指定的路径必须在同一分区<br/>&nbsp;&nbsp;proxy_temp_path&nbsp;&nbsp; /data0/proxy_temp_dir;<br/>&nbsp;&nbsp;#设置Web缓存区名称为cache_one，内存缓存空间大小为200MB，1天没有被访问的内容自动清除，硬盘缓存空间大小为30GB。<br/>&nbsp;&nbsp;proxy_cache_path&nbsp;&nbsp;/data0/proxy_cache_dir&nbsp;&nbsp;levels=1:2&nbsp;&nbsp; keys_zone=cache_one:200m inactive=1d max_size=30g;<br/>&nbsp;&nbsp;<br/>&nbsp;&nbsp;upstream backend_server &#123;<br/>&nbsp;&nbsp;&nbsp;&nbsp;server&nbsp;&nbsp; 192.168.8.43:80 weight=1 max_fails=2 fail_timeout=30s;<br/>&nbsp;&nbsp;&nbsp;&nbsp;server&nbsp;&nbsp; 192.168.8.44:80 weight=1 max_fails=2 fail_timeout=30s;<br/>&nbsp;&nbsp;&nbsp;&nbsp;server&nbsp;&nbsp; 192.168.8.45:80 weight=1 max_fails=2 fail_timeout=30s;<br/>&nbsp;&nbsp;&#125;<br/><br/>&nbsp;&nbsp;server<br/>&nbsp;&nbsp;&#123;<br/>&nbsp;&nbsp;&nbsp;&nbsp;listen&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 80;<br/>&nbsp;&nbsp;&nbsp;&nbsp;server_name&nbsp;&nbsp;www.yourdomain.com 192.168.8.42;<br/>&nbsp;&nbsp;&nbsp;&nbsp;index index.html index.htm;<br/>&nbsp;&nbsp;&nbsp;&nbsp;root&nbsp;&nbsp;/data0/htdocs/www;&nbsp;&nbsp;<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;location /<br/>&nbsp;&nbsp;&nbsp;&nbsp;&#123;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; #如果后端的服务器返回502、504、执行超时等错误，自动将请求转发到upstream负载均衡池中的另一台服务器，实现故障转移。<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; proxy_next_upstream http_502 http_504 error timeout invalid_header;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; proxy_cache cache_one;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; #对不同的HTTP状态码设置不同的缓存时间<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; proxy_cache_valid&nbsp;&nbsp;200 304 12h;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; #以域名、URI、参数组合成Web缓存的Key值，Nginx根据Key值哈希，存储缓存内容到二级缓存目录内<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; proxy_cache_key $host$uri$is_args$args;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; proxy_set_header Host&nbsp;&nbsp;$host;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; proxy_set_header X-Forwarded-For&nbsp;&nbsp;$remote_addr;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; proxy_pass http://backend_server;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; expires&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;1d;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&#125;<br/>&nbsp;&nbsp;&nbsp;&nbsp;<br/>&nbsp;&nbsp;&nbsp;&nbsp;#用于清除缓存，假设一个URL为http://192.168.8.42/test.txt，通过访问http://192.168.8.42/purge/test.txt就可以清除该URL的缓存。<br/>&nbsp;&nbsp;&nbsp;&nbsp;location ~ /purge(/.*)<br/>&nbsp;&nbsp;&nbsp;&nbsp;&#123;<br/>&nbsp;&nbsp;&nbsp;&nbsp; #设置只允许指定的IP或IP段才可以清除URL缓存。<br/>&nbsp;&nbsp;&nbsp;&nbsp; allow&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;127.0.0.1;<br/>&nbsp;&nbsp;&nbsp;&nbsp; allow&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;192.168.0.0/16;<br/>&nbsp;&nbsp;&nbsp;&nbsp; deny&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;all;<br/>&nbsp;&nbsp;&nbsp;&nbsp; proxy_cache_purge&nbsp;&nbsp;&nbsp;&nbsp;cache_one&nbsp;&nbsp; $host$1$is_args$args;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&#125;&nbsp;&nbsp;&nbsp;&nbsp;<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;#扩展名以.php、.jsp、.cgi结尾的动态应用程序不缓存。<br/>&nbsp;&nbsp;&nbsp;&nbsp;location ~ .*&#92;.(php&#124;jsp&#124;cgi)?$<br/>&nbsp;&nbsp;&nbsp;&nbsp;&#123;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; proxy_set_header Host&nbsp;&nbsp;$host;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; proxy_set_header X-Forwarded-For&nbsp;&nbsp;$remote_addr;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; proxy_pass http://backend_server;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&#125;<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;access_log&nbsp;&nbsp;off;<br/>&nbsp;&nbsp;&#125;<br/>&#125;</div><br/><hr/><br/>　　3、启动 Nginx：<br/><div style="border-left: 0px dashed #D6C094; margin: 5px; padding: 3px; margin-bottom:0px; border: 1px dashed #00a0c6; background-color: #ffffff;">/usr/local/webserver/nginx/sbin/nginx</div><br/><br/><hr/><br/>　　4、清除指定的URL缓存示例：<br/><br/>　　<a href="http://blog.s135.com/attachment/201001/nginx_purge.png" target="_blank"><img src="http://blog.s135.com/attachment/201001/nginx_purge.png" class="insertimage" alt="点击在新窗口中浏览此图片" title="点击在新窗口中浏览此图片" border="0"/></a><br/><br/>Tags - <a href="http://blog.s135.com/tags/nginx/" rel="tag">nginx</a> , <a href="http://blog.s135.com/tags/proxy/" rel="tag">proxy</a> , <a href="http://blog.s135.com/tags/cache/" rel="tag">cache</a> , <a href="http://blog.s135.com/tags/webcache/" rel="tag">webcache</a> , <a href="http://blog.s135.com/tags/squid/" rel="tag">squid</a> , <a href="http://blog.s135.com/tags/varnish/" rel="tag">varnish</a>
]]>
</description>
</item><item>
<link>http://blog.s135.com/httpsqs/</link>
<title><![CDATA[基于HTTP协议的轻量级开源简单队列服务：HTTPSQS[原创]]]></title> 
<author>张宴 &lt;net@s135.com&gt;</author>
<category><![CDATA[Cache与存储]]></category>
<pubDate>Tue, 29 Dec 2009 23:01:05 +0000</pubDate> 
<guid>http://blog.s135.com/httpsqs/</guid> 
<description>
<![CDATA[ 
	　　[文章作者：张宴 本文版本：v1.1 最后修改：2009.12.30 转载请注明原文链接：<a href="http://blog.s135.com/httpsqs/" target="_blank">http://blog.s135.com/httpsqs/</a>]<br/><br/>　　HTTPSQS（HTTP Simple Queue Service）是一款基于 HTTP GET/POST 协议的轻量级开源简单消息队列服务，使用 Tokyo Cabinet 的 B+Tree Key/Value 数据库来做数据的持久化存储。<br/><br/>　　项目网址：<a href="http://code.google.com/p/httpsqs/" target="_blank">http://code.google.com/p/httpsqs/</a><br/>　　使用环境：Linux（同时支持32位、64位操作系统，推荐使用64位操作系统）<br/>　　软件作者：张宴<br/><br/>　　队列（Queue）又称先进先出表（First In First Out），即先进入队列的元素，先从队列中取出。加入元素的一头叫“队头”，取出元素的一头叫“队尾”。利用消息队列可以很好地异步处理数据传送和存储，当你频繁地向数据库中插入数据、频繁地向搜索引擎提交数据，就可采取消息队列来异步插入。另外，还可以将较慢的处理逻辑、有并发数量限制的处理逻辑，通过消息队列放在后台处理，例如FLV视频转换、发送手机短信、发送电子邮件等。<br/><br/>　　<strong>1、HTTPSQS 具有以下特征：</strong><br/><br/>　　● 非常简单，基于 HTTP GET/POST 协议。PHP、Java、Perl、Shell、Python、Ruby等支持HTTP协议的编程语言均可调用。<br/>　　● 非常快速，入队列、出队列速度超过10000次/秒。<br/>　　● 高并发，支持上万的并发连接，<a href="http://www.kegel.com/c10k.html" target="_blank">C10K</a>不成问题。<br/>　　● 支持多队列。<br/>　　● 单个队列支持的最大队列数量高达10亿条。<br/>　　● 低内存消耗，海量数据存储，存储几十GB的数据只需不到100MB的物理内存缓冲区。<br/>　　● 可以在不停止服务的情况下便捷地修改单个队列的最大队列数量。<br/>　　● 可以实时查看队列状态（入队列位置、出队列位置、未读队列数量、最大队列数量）。<br/>　　● 可以查看指定队列ID（队列点）的内容，包括未出、已出的队列内容。<br/>　　● 查看队列内容时，支持多字符集编码。<br/>　　● 源代码不超过700行，适合二次开发。<br/><br/>　　<a href="http://blog.s135.com/attachment/200912/httpsqs_elements.png" target="_blank"><img src="http://blog.s135.com/attachment/200912/httpsqs_elements.png" class="insertimage" alt="点击在新窗口中浏览此图片" title="点击在新窗口中浏览此图片" border="0"/></a><br/><br/><hr/><br/>　　<strong>2、HTTPSQS 压力测试：</strong><br/><br/>　　采用Apache ab命令进行压力测试，开启10个线程，放入10万条文本数据（每条512字节）到队列中:<br/>　　使用HTTP Keep-Alive时：15446 requests/sec<br/>　　关闭HTTP Keep-Alive时：10515 requests/sec<br/><br/>　　采用Apache ab命令进行压力测试，开启10个线程，从队列中取出10万条文本数据（每条512字节）:<br/>　　使用HTTP Keep-Alive时：16817 requests/sec<br/>　　关闭HTTP Keep-Alive时：10823 requests/sec<br/><br/>　　详细测试内容：<a href="http://code.google.com/p/httpsqs/wiki/BenchmarkTest" target="_blank">http://code.google.com/p/httpsqs/wiki/BenchmarkTest</a><br/><br/>　　生产环境应用：在<a href="http://www.xoyo.com" target="_blank">金山游戏官网</a>中，新闻、论坛帖子、客服公告、SNS社区等发生的增、删、改操作，文本内容实时写入HTTPSQS队列，全站搜索引擎增量索引准实时（1分钟内）更新的数据源取自HTTPSQS。HTTPSQS 2009年12月18日上线至今，运行稳定，既有来自Web服务器的入队列操作，也有来自命令行脚本的批量入、出队列操作。<br/><br/><hr/><br/>　　<strong>3、HTTPSQS 编译安装：</strong><br/><br/>............<br/><br/>Tags - <a href="http://blog.s135.com/tags/httpsqs/" rel="tag">httpsqs</a> , <a href="http://blog.s135.com/tags/http/" rel="tag">http</a> , <a href="http://blog.s135.com/tags/queue/" rel="tag">queue</a> , <a href="http://blog.s135.com/tags/queues/" rel="tag">queues</a> , <a href="http://blog.s135.com/tags/sqs/" rel="tag">sqs</a> , <a href="http://blog.s135.com/tags/memcacheq/" rel="tag">memcacheq</a> , <a href="http://blog.s135.com/tags/memcachedb/" rel="tag">memcachedb</a> , <a href="http://blog.s135.com/tags/activemq/" rel="tag">activemq</a> , <a href="http://blog.s135.com/tags/starling/" rel="tag">starling</a> , <a href="http://blog.s135.com/tags/amazonsqs/" rel="tag">amazonsqs</a> , <a href="http://blog.s135.com/tags/tokyocabinet/" rel="tag">tokyocabinet</a> , <a href="http://blog.s135.com/tags/simple/" rel="tag">simple</a> , <a href="http://blog.s135.com/tags/service/" rel="tag">service</a> , <a href="http://blog.s135.com/tags/%25E9%2598%259F%25E5%2588%2597/" rel="tag">队列</a> , <a href="http://blog.s135.com/tags/%25E7%25AE%2580%25E5%258D%2595%25E9%2598%259F%25E5%2588%2597/" rel="tag">简单队列</a> , <a href="http://blog.s135.com/tags/%25E6%25B6%2588%25E6%2581%25AF%25E9%2598%259F%25E5%2588%2597/" rel="tag">消息队列</a>
]]>
</description>
</item><item>
<link>http://blog.s135.com/google_public_dns/</link>
<title><![CDATA[Google 公共 DNS 解析服务器]]></title> 
<author>张宴 &lt;net@s135.com&gt;</author>
<category><![CDATA[Windows相关]]></category>
<pubDate>Sun, 06 Dec 2009 23:09:15 +0000</pubDate> 
<guid>http://blog.s135.com/google_public_dns/</guid> 
<description>
<![CDATA[ 
	　　Google 推出了公共的 DNS 解析服务器（<a href="http://code.google.com/speed/public-dns/" target="_blank">Google Public DNS</a>），可以用来代替 <a href="http://www.opendns.com/" target="_blank">OpenDNS</a>。Google承诺将严格遵循DNS协议，即不阻挡、不劫持和不过滤用户查询。Google Public DNS服务器IP非常好记，过目难忘：<br/><br/><div class="quote"><div class="quote-title">引用</div><div class="quote-content"><span style="color: #FF0000;">8.8.8.8</span>　　　　　　　　google-public-dns-a.google.com<br/><span style="color: #FF0000;">8.8.4.4</span>　　　　　　　　google-public-dns-b.google.com</div></div><br/><br/>　　<a href="http://blog.s135.com/attachment/200912/google-dns.png" target="_blank"><img src="http://blog.s135.com/attachment/200912/google-dns.png" class="insertimage" alt="点击在新窗口中浏览此图片" title="点击在新窗口中浏览此图片" border="0"/></a><br/><br/>　　<a href="http://blog.s135.com/attachment/200912/google-nslookup.png" target="_blank"><img src="http://blog.s135.com/attachment/200912/google-nslookup.png" class="insertimage" alt="点击在新窗口中浏览此图片" title="点击在新窗口中浏览此图片" border="0"/></a><br/><br/>　　当然，短IP的DNS服务器还有以下这些：<br/><div class="quote"><div class="quote-title">引用</div><div class="quote-content"><span style="color: #FF0000;">4.3.2.1</span><br/>4.2.2.1<br/>4.2.2.2<br/>4.2.2.3<br/>4.2.2.4<br/>4.2.2.5<br/>4.2.2.6</div></div><br/><br/>Tags - <a href="http://blog.s135.com/tags/google/" rel="tag">google</a> , <a href="http://blog.s135.com/tags/public/" rel="tag">public</a> , <a href="http://blog.s135.com/tags/dns/" rel="tag">dns</a>
]]>
</description>
</item><item>
<link>http://blog.s135.com/bo-blog_nginx_rewrite/</link>
<title><![CDATA[Bo-Blog 2.1.1 的 Nginx Rewrite 规则[原创]]]></title> 
<author>张宴 &lt;net@s135.com&gt;</author>
<category><![CDATA[Web服务器]]></category>
<pubDate>Mon, 30 Nov 2009 05:04:30 +0000</pubDate> 
<guid>http://blog.s135.com/bo-blog_nginx_rewrite/</guid> 
<description>
<![CDATA[ 
	　　[文章作者：张宴 本文版本：v1.1 最后修改：2009.12.01 转载请注明原文链接：<a href="http://blog.s135.com/bo-blog_nginx_rewrite/" target="_blank">http://blog.s135.com/bo-blog_nginx_rewrite/</a>]<br/><br/>　　<a href="http://www.bo-blog.com/" target="_blank">Bo-Blog</a>是一款采用PHP开发的单用户博客程序，本人的博客也采用的是Bo-Blog，个人觉得bo-blog的排版、易用性要比WordPress好得多，但扩展性不如WordPress。<br/><br/>　　很多朋友向我询问过，Bo-Blog的Nginx Rewrite规则如何写。由于Bo-Blog官网只提供了Apache的Rewrite规则，这里，我将自己从 Bo-Blog 的 Apache Rewrite 规则转换而来的 Bo-Blog 2.1.1 的 Nginx Rewrite 重写规则贴在此处，供需要的朋友使用：<br/><div class="quote"><div class="quote-title">引用</div><div class="quote-content">&nbsp;&nbsp; if (!-e $request_filename)<br/>&nbsp;&nbsp; &#123;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;rewrite ^/post/([0-9]+)/?([0-9]+)?/?([0-9]+)?/?$ /read.php?entryid=$1&page=$2&part=$3 last;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;rewrite ^/page/([0-9]+)/([0-9]+)/?$ /index.php?mode=$1&page=$2 last;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;rewrite ^/starred/([0-9]+)/?([0-9]+)?/?$ /star.php?mode=$1&page=$2 last;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;rewrite ^/category/([^/]+)/?([0-9]+)?/?([0-9]+)?/?$ /index.php?go=category_$1&mode=$2&page=$3 last;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;rewrite ^/archiver/([0-9]+)/([0-9]+)/?([0-9]+)?/?([0-9]+)?/?$ /index.php?go=archive&cm=$1&cy=$2&mode=$3&page=$4 last;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;rewrite ^/date/([0-9]+)/([0-9]+)/([0-9]+)/?([0-9]+)?/?([0-9]+)?/?$ /index.php?go=showday_$1-$2-$3&mode=$4&page=$5 last;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;rewrite ^/user/([0-9]+)/?$ /view.php?go=user_$1 last;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;rewrite ^/tags/([^/]+)/?([0-9]+)?/?([0-9]+)?/?$ /tag.php?tag=$1&mode=$2&page=$3 last;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;rewrite ^/component/id/([0-9]+)/?$ /page.php?pageid=$1 last;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;rewrite ^/component/([^/]+)/?$ /page.php?pagealias=$1 last;<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;#Force redirection for old rules<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;rewrite ^/read&#92;.php/([0-9]+)&#92;.htm$ <a href="http://$host/post/$1/" target="_blank">http://$host/post/$1/</a> permanent;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;rewrite ^/post/([0-9]+)&#92;.htm$ <a href="http://$host/post/$1/" target="_blank">http://$host/post/$1/</a> permanent;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;rewrite ^/post/([0-9]+)&#92;_([0-9]+)&#92;.htm$ <a href="http://$host/post/$1/$2/" target="_blank">http://$host/post/$1/$2/</a> permanent;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;rewrite ^/post/([0-9]+)&#92;_([0-9]+)&#92;_([0-9]+)&#92;.htm$ <a href="http://$host/post/$1/$2/$3/" target="_blank">http://$host/post/$1/$2/$3/</a> permanent;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;rewrite ^/index&#92;_([0-9]+)&#92;_([0-9]+)&#92;.htm$ <a href="http://$host/page/$1/$2/" target="_blank">http://$host/page/$1/$2/</a> permanent;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;rewrite ^/star&#92;_([0-9]+)&#92;_([0-9]+)&#92;.htm$ <a href="http://$host/starred/$1/$2/" target="_blank">http://$host/starred/$1/$2/</a> permanent;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;rewrite ^/category&#92;_([0-9]+)&#92;.htm$ <a href="http://$host/category/$1/" target="_blank">http://$host/category/$1/</a> permanent;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;rewrite ^/category&#92;_([0-9]+)&#92;_([0-9]+)&#92;_([0-9]+)&#92;.htm$ <a href="http://$host/category/$1/$2/$3/" target="_blank">http://$host/category/$1/$2/$3/</a> permanent;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;rewrite ^/archive&#92;_([0-9]+)&#92;_([0-9]+)&#92;.htm$ <a href="http://$host/archiver/$1/$2/" target="_blank">http://$host/archiver/$1/$2/</a> permanent;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;rewrite ^/archive&#92;_([0-9]+)&#92;_([0-9]+)&#92;_([0-9]+)&#92;_([0-9]+)&#92;.htm$ <a href="http://$host/archiver/$1/$2/$3/$4/" target="_blank">http://$host/archiver/$1/$2/$3/$4/</a> permanent;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;rewrite ^/showday&#92;_([0-9]+)&#92;_([0-9]+)&#92;_([0-9]+)&#92;.htm$ <a href="http://$host/date/$1/$2/$3/" target="_blank">http://$host/date/$1/$2/$3/</a> permanent;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;rewrite ^/showday&#92;_([0-9]+)&#92;_([0-9]+)&#92;_([0-9]+)&#92;_([0-9]+)&#92;_([0-9]+)&#92;.htm$ <a href="http://$host/date/$1/$2/$3/$4/$5/" target="_blank">http://$host/date/$1/$2/$3/$4/$5/</a> permanent;<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;#Filename alias<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;rewrite ^/([a-zA-Z0-9_-]+)/?([0-9]+)?/?([0-9]+)?/?$ /read.php?blogalias=$1&page=$2&part=$3 last;<br/>&nbsp;&nbsp; &#125;</div></div><br/><br/>　　PS：2009-12-01修正一处错误，之前文章中的if (!-x更换为if (!-e<br/>Tags - <a href="http://blog.s135.com/tags/bo-blog/" rel="tag">bo-blog</a> , <a href="http://blog.s135.com/tags/wordpress/" rel="tag">wordpress</a> , <a href="http://blog.s135.com/tags/nginx/" rel="tag">nginx</a> , <a href="http://blog.s135.com/tags/rewrite/" rel="tag">rewrite</a>
]]>
</description>
</item><item>
<link>http://blog.s135.com/startssl/</link>
<title><![CDATA[全球可信并且唯一免费的HTTPS(SSL)证书颁发机构：StartSSL]]></title> 
<author>张宴 &lt;net@s135.com&gt;</author>
<category><![CDATA[其他Unix技术]]></category>
<pubDate>Fri, 13 Nov 2009 16:21:05 +0000</pubDate> 
<guid>http://blog.s135.com/startssl/</guid> 
<description>
<![CDATA[ 
	　　[文章作者：张宴 本文版本：v1.0 最后修改：2009.11.14 转载请注明原文链接：<a href="http://blog.s135.com/startssl/" target="_blank">http://blog.s135.com/startssl/</a>]<br/><br/>　　HTTPS（全称：Hypertext Transfer Protocol over Secure Socket Layer），是以安全为目标的HTTP通道，简单讲是HTTP的安全版。即HTTP下加入SSL层，HTTPS的安全基础是SSL，因此加密的详细内容请看SSL。<br/><br/>　　它是一个URI scheme（抽象标识符体系），句法类同http:体系。用于安全的HTTP数据传输。https:URL表明它使用了HTTP，但HTTPS存在不同于HTTP的默认端口及一个加密/身份验证层（在HTTP与TCP之间）。这个系统的最初研发由网景公司进行，提供了身份验证与加密通讯方法，现在它被广泛用于万维网上安全敏感的通讯，例如交易支付方面。<br/><br/><hr/><br/>　　<strong>1、自行颁发不受浏览器信任的SSL证书：</strong><br/>　　HTTPS的SSL证书可以自行颁发，Linux下的颁发步骤如下：<br/><div style="border-left: 0px dashed #D6C094; margin: 5px; padding: 3px; margin-bottom:0px; border: 1px dashed #00a0c6; background-color: #ffffff;">openssl genrsa -des3 -out api.bz.key 1024<br/>openssl req -new -key api.bz.key -out api.bz.csr<br/>openssl rsa -in api.bz.key -out api.bz_nopass.key</div><br/>　　<a href="http://blog.s135.com/attachment.php?fid=59" target="_blank"><img src="http://blog.s135.com/attachment.php?fid=59" class="insertimage" alt="点击在新窗口中浏览此图片" title="点击在新窗口中浏览此图片" border="0"/></a><br/><br/>　　Nginx.conf的SSL证书配置，使用api.bz_nopass.key，在启动Nginx是无需输入SSL证书密码，而使用api.bz.key则需要输入密码：<br/><div class="quote"><div class="quote-title">引用</div><div class="quote-content"> server<br/> &#123;<br/>&nbsp;&nbsp; server_name sms.api.bz;<br/>&nbsp;&nbsp; listen&nbsp;&nbsp;443;<br/>&nbsp;&nbsp; index index.html index.htm index.php;<br/><br/>&nbsp;&nbsp; root&nbsp;&nbsp;/data0/htdocs/api.bz;<br/><br/>&nbsp;&nbsp; ssl on;<br/>&nbsp;&nbsp; ssl_certificate api.bz.crt;<br/>&nbsp;&nbsp; ssl_certificate_key api.bz_nopass.key;<br/>&nbsp;&nbsp; ......<br/> &#125;</div></div><br/><br/>　　自行颁发的SSL证书虽然能够实现加密传输功能，但得不到浏览器的信任，会出现以下提示：<br/>　　<a href="http://blog.s135.com/attachment.php?fid=60" target="_blank"><img src="http://blog.s135.com/attachment.php?fid=60" class="insertimage" alt="点击在新窗口中浏览此图片" title="点击在新窗口中浏览此图片" border="0"/></a><br/><br/><hr/><br/>　　<strong>2、受浏览器信任的StartSSL免费SSL证书：</strong><br/><br/>............<br/><br/>Tags - <a href="http://blog.s135.com/tags/startssl/" rel="tag">startssl</a> , <a href="http://blog.s135.com/tags/startcom/" rel="tag">startcom</a> , <a href="http://blog.s135.com/tags/https/" rel="tag">https</a> , <a href="http://blog.s135.com/tags/ssl/" rel="tag">ssl</a> , <a href="http://blog.s135.com/tags/openssl/" rel="tag">openssl</a>
]]>
</description>
</item><item>
<link>http://blog.s135.com/kingsoft_campus_2010/</link>
<title><![CDATA[金山软件2010校园招聘---西安站]]></title> 
<author>张宴 &lt;net@s135.com&gt;</author>
<category><![CDATA[生活琐事]]></category>
<pubDate>Fri, 06 Nov 2009 12:19:00 +0000</pubDate> 
<guid>http://blog.s135.com/kingsoft_campus_2010/</guid> 
<description>
<![CDATA[ 
	　　<a href="http://blog.s135.com/attachment.php?fid=58" target="_blank"><img src="http://blog.s135.com/attachment.php?fid=58" class="insertimage" alt="点击在新窗口中浏览此图片" title="点击在新窗口中浏览此图片" border="0"/></a><br/><br/>　　<a href="http://campus.kingsoft.com/" target="_blank">http://campus.kingsoft.com/</a><br/><br/>　　2009年11月8日14:10，将和其他同事一道，乘坐东方航空MU2120航班飞往西安，参加金山软件2010校园招聘西安站的大招会。<br/><br/>　　<a href="http://blog.s135.com/attachment.php?fid=56" target="_blank"><img src="http://blog.s135.com/attachment.php?fid=56" class="insertimage" alt="点击在新窗口中浏览此图片" title="点击在新窗口中浏览此图片" border="0"/></a><br/><br/>　　金山逍遥网校园招聘的研发类岗位如下，我们张开双臂欢迎各位青年才俊的加盟：<br/><br/>　　<span style="font-size: 12px;"><strong>北京金山网络游戏KSG </strong></span><br/><br/>　　<strong>北京逍遥网研发</strong> <br/><br/>　　<strong>逍遥网系统工程师</strong> <br/>　　工作职责：<br/>　　1、服务器安装、配置、调优；<br/>　　2、常用环境搭建，如：apache、php、mysql、nginx、memcache等；<br/>　　3、系统脚本编写，数据统计。<br/>　　任职资格：<br/>　　1、熟悉网络理论(如OSI七层模型,TCP状态机)，网络协议（TCP/IP）等；<br/>　　2、了解各种网络设备的配置调试及故障分析；<br/>　　3、熟练linux上c++/c网络编程,了解cgi,berkly bd编程、熟练多线程开发；<br/>　　3、熟悉UNIX系统,具备一定的脚本开发能力(Perl,PHP,C,shell script等)；<br/>　　4、愿意积极主动的思考如何把工作做好；<br/>　　5、有团队合作精神，能够承受较大的工作压力。<br/>　　注：请附以往能证明个人专业能力的资料如代码。<br/> <br/>　　<strong>逍遥网FLEX工程师</strong> <br/>　　工作职责： <br/>　　1、配合业务需要开发前端应用；<br/>　　2、根据社区业务开发前端应用。<br/>　　任职资格：<br/>　　1、熟练使用Action Script 3.0在FlexBuilder环境下开发；<br/>　　2、熟练使用Flex与AIR的标准组件；<br/>　　3、熟悉Flash小游戏开发；<br/>　　4、品行良好，性格开朗，具备良好的沟通能力；<br/>　　5、熟悉社区应用。<br/>　　注：请附以往能证明个人专业能力的资料如代码。<br/><br/>　　<strong>逍遥网PHP工程师</strong> <br/>　　工作职责： <br/>　　1、熟悉apache＋php5 + mysql 开发；<br/>　　2、了解PHP主流框架，且有一定的使用经验；<br/>　　3、了解各种设计模式，并能应用在开发当中；<br/>　　4、了解json、AJAX技术和模板技术，了解css+div和JavaScript；<br/>　　5、具有文档编写能力，面向对象的编程思想，优良的编程风格和习惯；<br/>　　6、了解LAMP构架，有一定的环境配置及维护经验；<br/>　　7、较强的团队协作能力、沟通能力和学习能力。<br/>　　任职资格：<br/>　　1、熟练PHP开发；<br/>　　2、熟练使用CSS，HTML，javascript；<br/>　　3、扎实的SQL知识，熟练使用MySQL；<br/>　　4、良好的SQL，PL/SQL编程技巧，有在Mysql下的编程经验；<br/>　　5、具有独立解决问题的能力及团队合作精神。<br/>　　注：请附以往能证明个人专业能力的资料如代码。<br/><br/>　　<strong>逍遥网JAVA工程师</strong> <br/>　　工作职责： <br/>　　1、根据业务需要进行底层应用开发；<br/>　　2、根据社区业务需要进行OPENAPI相关开发。<br/>　　任职资格：<br/>　　1、对Java面向对象软件结构有深入理解以及很强的应用能力； <br/>　　2、能够熟练应用JSP/Servlet/JavaScript等WEB开发技术，熟悉Spring，Struts和Hibernate等主流的开发框架；<br/>　　3、了解数据库的基本理论和内部实现机制，有大数据量的数据库设计能力；<br/>　　4、了解TCP/IP、HTTP等协议，有网络编程及多线程开发经验； <br/>　　5、熟悉社区应用、了解OPENAPI相关技术；<br/>　　6、较强的自学能力，思维清晰；<br/>　　7、有较好的沟通交流能力。 <br/>　　注：请附以往能证明个人专业能力的资料如代码。<br/><br/>　　此外，还有逍遥网测试、编辑、运营等其他岗位，以及金山软件其他部门的招聘岗位，详见：<br/><br/>　　<a href="http://campus.chinahr.com/2010/pages/kingsoft/jobs.asp?selCity=北京" target="_blank">金山软件2010全国校园招聘会--招聘职位</a><br/><br/><br/><br/><br/>Tags - <a href="http://blog.s135.com/tags/%25E9%2587%2591%25E5%25B1%25B1%25E8%25BD%25AF%25E4%25BB%25B6/" rel="tag">金山软件</a> , <a href="http://blog.s135.com/tags/%25E6%25A0%25A1%25E5%259B%25AD%25E6%258B%259B%25E8%2581%2598/" rel="tag">校园招聘</a>
]]>
</description>
</item><item>
<link>http://blog.s135.com/dips/</link>
<title><![CDATA[利用开源的Gearman框架构建分布式图片处理平台[原创]]]></title> 
<author>张宴 &lt;net@s135.com&gt;</author>
<category><![CDATA[其他Unix技术]]></category>
<pubDate>Sun, 01 Nov 2009 01:24:10 +0000</pubDate> 
<guid>http://blog.s135.com/dips/</guid> 
<description>
<![CDATA[ 
	　　[文章作者：张宴 本文版本：v1.0 最后修改：2009.11.01 转载请注明原文链接：<a href="http://blog.s135.com/dips/" target="_blank">http://blog.s135.com/dips/</a>]<br/><br/>　　2009年10月28日，在金山逍遥技术支持部内部分享会上，介绍了Gearman分布式计算框架与金山逍遥DIPS分布式图片处理平台，以下是PPT图片：<br/><br/>　　<a href="http://blog.s135.com/attachment/200910/dips/jpg/dips1.jpg" target="_blank"><img src="http://blog.s135.com/attachment/200910/dips/jpg/dips1.jpg" class="insertimage" alt="点击在新窗口中浏览此图片" title="点击在新窗口中浏览此图片" border="0"/></a><br/>　　<a href="http://blog.s135.com/attachment/200910/dips/jpg/dips2.jpg" target="_blank"><img src="http://blog.s135.com/attachment/200910/dips/jpg/dips2.jpg" class="insertimage" alt="点击在新窗口中浏览此图片" title="点击在新窗口中浏览此图片" border="0"/></a><br/><br/>............<br/><br/>Tags - <a href="http://blog.s135.com/tags/dips/" rel="tag">dips</a> , <a href="http://blog.s135.com/tags/%25E5%2588%2586%25E5%25B8%2583%25E5%25BC%258F%25E8%25AE%25A1%25E7%25AE%2597/" rel="tag">分布式计算</a> , <a href="http://blog.s135.com/tags/%25E5%2588%2586%25E5%25B8%2583%25E5%25BC%258F%25E5%259B%25BE%25E7%2589%2587%25E5%25A4%2584%25E7%2590%2586/" rel="tag">分布式图片处理</a> , <a href="http://blog.s135.com/tags/gearman/" rel="tag">gearman</a>
]]>
</description>
</item><item>
<link>http://blog.s135.com/sd2c_nginx/</link>
<title><![CDATA[2009-10-24在CSDN第三届软件开发2.0大会（SD2C）的Nginx演讲PPT[原创]]]></title> 
<author>张宴 &lt;net@s135.com&gt;</author>
<category><![CDATA[Web服务器]]></category>
<pubDate>Mon, 26 Oct 2009 05:24:26 +0000</pubDate> 
<guid>http://blog.s135.com/sd2c_nginx/</guid> 
<description>
<![CDATA[ 
	　　<a href="http://blog.s135.com/attachment.php?fid=53" target="_blank"><img src="http://blog.s135.com/attachment.php?fid=53" class="insertimage" alt="点击在新窗口中浏览此图片" title="点击在新窗口中浏览此图片" border="0"/></a><br/><br/>　　CSDN SD2.0大会官网：<a href="http://sd2china.csdn.net/" target="_blank">http://sd2china.csdn.net/</a><br/><br/>　　新浪科技SD2.0大会专题：<a href="http://tech.sina.com.cn/focus/CSDN_2009/" target="_blank">http://tech.sina.com.cn/focus/CSDN_2009/</a><br/><br/>　　24日Web分场：<a href="http://sd2china.csdn.net/schedule#schedule3" target="_blank">http://sd2china.csdn.net/schedule#schedule3</a><br/><br/>　　《高性能Web服务器Nginx及相关新技术的应用实践》PPT下载：<br/><a href="http://blog.s135.com/book/sd2.0/ppt/sd2c_nginx.zip">点击这里下载文件</a><br/><br/>　　FLash版本在线浏览：<br/><br/>此处包含一个多媒体文件，请用网页方式查看。<br/><br/><br/><br/>Tags - <a href="http://blog.s135.com/tags/csdn/" rel="tag">csdn</a> , <a href="http://blog.s135.com/tags/sd2c/" rel="tag">sd2c</a> , <a href="http://blog.s135.com/tags/sd2.0/" rel="tag">sd2.0</a> , <a href="http://blog.s135.com/tags/nginx/" rel="tag">nginx</a>
]]>
</description>
</item><item>
<link>http://blog.s135.com/pptp_vpn/</link>
<title><![CDATA[CentOS 5.3 下快速安装配置 PPTP VPN 服务器]]></title> 
<author>张宴 &lt;net@s135.com&gt;</author>
<category><![CDATA[其他Unix技术]]></category>
<pubDate>Tue, 13 Oct 2009 15:56:43 +0000</pubDate> 
<guid>http://blog.s135.com/pptp_vpn/</guid> 
<description>
<![CDATA[ 
	　　VPN的英文全称是“Virtual Private Network”，翻译过来就是“虚拟专用网络”。顾名思义，虚拟专用网络我们可以把它理解成是虚拟出来的企业内部专线。它可以通过特殊的加密的通讯协议在连接在Internet上的位于不同地方的两个或多个企业内部网之间建立一条专有的通讯线路，就好比是架设了一条专线一样，但是它并不需要真正的去铺设光缆之类的物理线路。这就好比去电信局申请专线，但是不用给铺设线路的费用，也不用购买路由器等硬件设备。VPN技术原是路由器具有的重要技术之一，目前在交换机，防火墙设备或Windows等软件里也都支持VPN功能，一句话，VPN的核心就是在利用公共网络建立虚拟私有网。<br/><br/>　　虚拟专用网（VPN）被定义为通过一个公用网络（通常是因特网）建立一个临时的、安全的连接，是一条穿过混乱的公用网络的安全、稳定的隧道。虚拟专用网是对企业内部网的扩展。虚拟专用网可以帮助远程用户、公司分支机构、商业伙伴及供应商同公司的内部网建立可信的安全连接，并保证数据的安全传输。虚拟专用网可用于不断增长的移动用户的全球因特网接入，以实现安全连接；可用于实现企业网站之间安全通信的虚拟专用线路，用于经济有效地连接到商业伙伴和用户的安全外联网虚拟专用网。<br/><br/>　　PPTP 全称为 Point to Point Tunneling Protocol -- 点到点隧道协议，是VPN协议中的一种。<br/><br/>　　<strong>一、CentOS 5.3 下 PPTP VPN 服务器安装</strong><br/><br/>　　<strong>1、安装相关软件</strong><br/>　　32位版：<br/><div style="border-left: 0px dashed #D6C094; margin: 5px; padding: 3px; margin-bottom:0px; border: 1px dashed #00a0c6; background-color: #ffffff;">yum install -y ppp iptables<br/>wget <a href="http://poptop.sourceforge.net/yum/stable/packages/pptpd-1.3.4-1.rhel5.1.i386.rpm" target="_blank">http://poptop.sourceforge.net/yum/stable/packages/pptpd-1.3.4-1.rhel5.1.i386.rpm</a><br/>rpm -ivh pptpd-1.3.4-1.rhel5.1.i386.rpm</div><br/>　　64位版：<br/><div style="border-left: 0px dashed #D6C094; margin: 5px; padding: 3px; margin-bottom:0px; border: 1px dashed #00a0c6; background-color: #ffffff;">yum install -y ppp iptables<br/>wget <a href="http://poptop.sourceforge.net/yum/stable/packages/pptpd-1.3.4-1.rhel5.1.x86_64.rpm" target="_blank">http://poptop.sourceforge.net/yum/stable/packages/pptpd-1.3.4-1.rhel5.1.x86_64.rpm</a><br/>rpm -ivh pptpd-1.3.4-1.rhel5.1.x86_64.rpm</div><br/><br/>　　<strong>2、配置文件编写</strong><br/>　　<strong>①、配置文件/etc/ppp/options.pptpd</strong><br/><div style="border-left: 0px dashed #D6C094; margin: 5px; padding: 3px; margin-bottom:0px; border: 1px dashed #00a0c6; background-color: #ffffff;">mv /etc/ppp/options.pptpd /etc/ppp/options.pptpd.bak<br/>vi /etc/ppp/options.pptpd</div><br/>　　输入以下内容：<br/><div style="border-left: 0px dashed #D6C094; margin: 5px; padding: 3px; margin-bottom:0px; border: 1px dashed #00a0c6; background-color: #ffffff;">name pptpd<br/>refuse-pap<br/>refuse-chap<br/>refuse-mschap<br/>require-mschap-v2<br/>require-mppe-128<br/>proxyarp<br/>lock<br/>nobsdcomp<br/>novj<br/>novjccomp<br/>nologfd<br/>idle 2592000<br/>ms-dns 8.8.8.8<br/>ms-dns 8.8.4.4</div><br/><hr/><br/>　　<strong>②、配置文件/etc/ppp/chap-secrets</strong><br/><div style="border-left: 0px dashed #D6C094; margin: 5px; padding: 3px; margin-bottom:0px; border: 1px dashed #00a0c6; background-color: #ffffff;">mv /etc/ppp/chap-secrets /etc/ppp/chap-secrets.bak<br/>vi /etc/ppp/chap-secrets</div><br/>　　输入以下内容<br/><div style="border-left: 0px dashed #D6C094; margin: 5px; padding: 3px; margin-bottom:0px; border: 1px dashed #00a0c6; background-color: #ffffff;"># Secrets for authentication using CHAP<br/># client&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;server&nbsp;&nbsp;secret&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;IP addresses<br/>myusername pptpd mypassword *</div><br/>　　注：这里的myusername和mypassword即为PPTP VPN的登录用户名和密码<br/><br/><hr/><br/>　　<strong>③、配置文件/etc/pptpd.conf</strong><br/><div style="border-left: 0px dashed #D6C094; margin: 5px; padding: 3px; margin-bottom:0px; border: 1px dashed #00a0c6; background-color: #ffffff;">mv /etc/pptpd.conf /etc/pptpd.conf.bak<br/>vi /etc/pptpd.conf</div><br/>　　输入以下内容：<br/><div style="border-left: 0px dashed #D6C094; margin: 5px; padding: 3px; margin-bottom:0px; border: 1px dashed #00a0c6; background-color: #ffffff;">option /etc/ppp/options.pptpd<br/>logwtmp<br/>localip 192.168.9.1<br/>remoteip 192.168.9.11-30</div><br/>　　注：为拨入VPN的用户动态分配192.168.9.11～192.168.9.30之间的IP<br/><br/>............<br/><br/>Tags - <a href="http://blog.s135.com/tags/pptp/" rel="tag">pptp</a> , <a href="http://blog.s135.com/tags/vpn/" rel="tag">vpn</a> , <a href="http://blog.s135.com/tags/ppp/" rel="tag">ppp</a> , <a href="http://blog.s135.com/tags/centos/" rel="tag">centos</a>
]]>
</description>
</item><item>
<link>http://blog.s135.com/huayuankou/</link>
<title><![CDATA[黄河花园口决堤处的那些碑文]]></title> 
<author>张宴 &lt;net@s135.com&gt;</author>
<category><![CDATA[生活琐事]]></category>
<pubDate>Tue, 06 Oct 2009 14:59:26 +0000</pubDate> 
<guid>http://blog.s135.com/huayuankou/</guid> 
<description>
<![CDATA[ 
	　　今天上午，参观了1938年黄河花园口决堤处。<br/><br/>　　花园口位于郑州市区北郊17公里处的黄河南岸。抗日战争开始后，侵华日军沿平汉、津浦两路南下。1938年5月19日，徐州失守，日军沿陇海路西犯，于6月初攻陷开封，接着跟踪西进，抵达距离郑州不足百里的地方。郑州是陇海、平汉铁路的交汇处，北扼黄河天险，郑州一失，不但阻断各个战区间的铁路交通，而且将会导致西安、武汉无险可守的严重局面。而此时在河南境内的国民党主力部队多为徐州战场撤下的疲兵，尚未得到休整，已无力再战。为了阻止日军侵犯中原，1938年6月9日，蒋介石采取“以水代兵”的办法，下令扒开花园口黄河大堤，黄河水汹涌而出，一泻千里。它在一定程度上实现了阻截日军西进南下的目的，日军第14、第16师团陷入困境，但同时也给豫、皖、苏的中国百姓带来了深重的灾难，淹没耕地1200余万亩，造成黄泛区，共计有1200万人受灾，390万人流离失所，89万人死亡，震惊全世界。<br/><br/>　　花园口的决堤主要责任是由于国民政府国民革命军中的中央军的主要将领桂永清和黄杰不听调遣，贪生怕死，擅自逃跑，导致原来制定的兰封作战计划全盘崩溃。最后才出此下策。<br/> <br/>　　花园口决堤给日军造成重大伤亡，据日本防卫厅防卫研究所战史室编写的《中国事变陆军作战史》记载，洪水之后日军于6月17日以航空兵团全力援助困于河水的第十六师团方面的补给。用运输机、轻重轰炸机，在6月16至24日之间给两个师团投下补给粮秣、卫生材料不计其数。6月29日，日军在徐州举行联合追悼大会。仅第二军死于洪水人数便达到7452名之多。 <br/><br/>　　决堤后，由于形成黄泛区这一巨大地障，迫使敌人于平汉路以东停止前进，从而消除了唐、白河流域及汉水中游面临的威胁。并守住了军事重地郑州。<br/><br/>　　战后蒋中正（字介石）调拨了大量资金修复黄河大堤，史称“黄河归故”，即恢复故道。<br/><br/>　　<a href="http://blog.s135.com/attachment.php?fid=44" target="_blank"><img src="http://blog.s135.com/attachment.php?fid=44" class="insertimage" alt="点击在新窗口中浏览此图片" title="点击在新窗口中浏览此图片" border="0"/></a><br/><br/>............<br/><br/>Tags - <a href="http://blog.s135.com/tags/%25E9%25BB%2584%25E6%25B2%25B3/" rel="tag">黄河</a> , <a href="http://blog.s135.com/tags/%25E8%258A%25B1%25E5%259B%25AD%25E5%258F%25A3/" rel="tag">花园口</a> , <a href="http://blog.s135.com/tags/%25E5%2586%25B3%25E5%25A0%25A4/" rel="tag">决堤</a> , <a href="http://blog.s135.com/tags/%25E9%25BB%2584%25E6%25B2%25B3%25E5%25A4%25A7%25E5%25A0%25A4/" rel="tag">黄河大堤</a>
]]>
</description>
</item><item>
<link>http://blog.s135.com/tcsql/</link>
<title><![CDATA[为列表页缓存而生：TCSQL实时列表缓存数据库帮助文档[原创]]]></title> 
<author>张宴 &lt;net@s135.com&gt;</author>
<category><![CDATA[数据库技术]]></category>
<pubDate>Fri, 25 Sep 2009 05:27:07 +0000</pubDate> 
<guid>http://blog.s135.com/tcsql/</guid> 
<description>
<![CDATA[ 
	　　[文章作者：张宴 本文版本：v1.0 最后修改：2009.09.25 转载请注明原文链接：<a href="http://blog.s135.com/tcsql/" target="_blank">http://blog.s135.com/tcsql/</a>]<br/><br/>　　曾经有人提出，一般数据库缓存分为四种。第一种：单个对象的缓存（一个对象就是数据库一条记录），对于单个对象的临时缓存或永久缓存，用HashMap就可以了，Key-Value方式的Memcached、Memcachedb、Tokyo Tyrant都可以，或者直接对查询数据库的网页采用Squid做缓存，没什么太难的；第二种：列表缓存，就像论坛里帖子的列表；第三种：记录条数的缓存，比如一个论坛板块里有多少个帖子，这样才方便实现分页。第四种：复杂一点的group，sum，count查询，比如一个论坛里按点击数排名的最HOT的帖子列表。第一种比较好实现，后面三种比较困难，虽然可以通过各种方法来解决，但截至目前，似乎还没有使用即简单、并发处理能力又强、实时性又高的解决办法。<br/><br/><hr/><br/>　　TCSQL为列表页的实时缓存而生，是金山逍遥网技术支持部平台组以Tokyo Cabinet DBM为底层存储与索引，结合类似Memcached的Key-Value内存对象缓存，借鉴SQL语句的SELECT、INSERT、UPDATE、DELETE思想与功能开发的实时列表缓存数据库，能够较好地解决上述前三种类别，特别是第二种、第三种类别的高并发读写问题。<br/><br/>　　TCSQL采用HTTP GET/POST协议＋JSON数据交换格式在客户端、服务器端之间进行数据交互，支持HTTP协议的任何客户端或语言（例如JavaScript、PHP、JSP、Perl、Python等），都能够连接TCSQL服务器进行操作。这就意味着，一些查询量非常大的应用，甚至可以直接使用运行在用户浏览器端的JavaScript代码访问TCSQL数据库，当然，为了安全起见，你可以在中间用Nginx配以rewrite规则，对TCSQL做个反向代理，限制一下查询权限。<br/><br/>　　利用开源的MySQL UDF自定义函数扩展lib_mysqludf_urlencode、lib_mysqludf_urlencode，以及我们平台组周洋同学编写的lib_mysqludf_http_post扩展，配以MySQL触发器，我们可以在MySQL的某张表发生插入、更新、删除操作时，自动将数据同步到TCSQL数据库，使得TCSQL可以当MySQL从库一样使用。<br/><br/>　　TCSQL实时列表缓存数据库单机能够支撑1万以上的并发连接，QPS（每秒查询率）能够达到5000～15000次。<br/><br/><a href="http://blog.s135.com/attachment.php?fid=27" target="_blank"><img src="http://blog.s135.com/attachment.php?fid=27" class="insertimage" alt="点击在新窗口中浏览此图片" title="点击在新窗口中浏览此图片" border="0"/></a><br/><br/>　　以下是TCSQL在10000并发连接情况下的查询速度（服务器为浪潮NF190服务器，两颗双核Xeon(TM) CPU 2.80GHz、4GB内存、1万转SCSI硬盘。）：<br/><br/>　　1、第一种类型A：主键查询并取出倒序第1条记录（“=”运算）：<span style="color: #FF0000;">12155次请求/秒</span><br/><br/>　　查询内容：<a href="http://192.168.8.34:3888/?command=select&type=" target="_blank">http://192.168.8.34:3888/?command=select&type=</a>*&where=pkey:NUMEQ:随机数值&order_filed=pkey&order_sort=NUMDESC&limit_skip=0&limit_max=1<br/><br/>　　测试结果：<br/><div class="quote"><div class="quote-title">引用</div><div class="quote-content">Benchmarking: 10000 clients, running 60 sec.<br/><br/>Speed=729324 pages/min, 8031913 bytes/sec.<br/>Requests: 60777 susceed, 0 failed.</div></div><br/><br/>　　2、第一种类型B：其他索引键查询并取出倒序第1条记录（“=”运算）：<span style="color: #FF0000;">11897次请求/秒</span><br/><br/>　　查询内容：<a href="http://192.168.8.34:3888/?command=select&type=" target="_blank">http://192.168.8.34:3888/?command=select&type=</a>*&where=uid:NUMEQ:随机数值&order_filed=pkey&order_sort=NUMDESC&limit_skip=0&limit_max=1<br/><br/>　　测试结果：<br/><div class="quote"><div class="quote-title">引用</div><div class="quote-content">Benchmarking: 10000 clients, running 60 sec.<br/><br/>Speed=713856 pages/min, 7865884 bytes/sec.<br/>Requests: 59488 susceed, 0 failed.</div></div><br/><br/>　　3、第二种类型：根据复合条件查询并取出倒序前10条记录：<span style="color: #FF0000;">8778次请求/秒</span>（相当于SELECT * FROM table WHERE dateline >= 随机时间戳 AND idtype = '变换的文本' ORDER BY pkey DESC LIMIT 0,10）<br/><br/>　　查询内容：<a href="http://192.168.8.34:3888/?command=select&type=" target="_blank">http://192.168.8.34:3888/?command=select&type=</a>*&where=dateline:NUMGE:随机时间戳&#124;idtype:STREQ:变换的文本&order_filed=pkey&order_sort=NUMDESC&limit_skip=0&limit_max=10<br/><br/>　　测试结果：<br/><div class="quote"><div class="quote-title">引用</div><div class="quote-content">Benchmarking: 10000 clients, running 60 sec.<br/><br/>Speed=526680 pages/min, 8971878 bytes/sec.<br/>Requests: 43890 susceed, 0 failed.</div></div><br/><br/>　　4、第三种类型：统计符合查询条件的记录数量：<span style="color: #FF0000;">9160次请求/秒</span>（相当于SELECT count(*) FROM table WHERE dateline >= 随机时间戳 AND idtype = '变换的文本'）<br/><br/>　　查询内容：<a href="http://192.168.8.34:3888/?command=select&type=count&where=dateline:NUMGE:" target="_blank">http://192.168.8.34:3888/?command=select&type=count&where=dateline:NUMGE:</a>随机时间戳&#124;idtype:STREQ:变换的文本<br/><br/>　　测试结果：<br/><div class="quote"><div class="quote-title">引用</div><div class="quote-content">Benchmarking: 10000 clients, running 5 sec.<br/><br/>Speed=549648 pages/min, 714542 bytes/sec.<br/>Requests: 45804 susceed, 0 failed.</div></div><br/><br/><br/>............<br/><br/>Tags - <a href="http://blog.s135.com/tags/tcsql/" rel="tag">tcsql</a> , <a href="http://blog.s135.com/tags/tokyocabinet/" rel="tag">tokyocabinet</a> , <a href="http://blog.s135.com/tags/tokyo/" rel="tag">tokyo</a> , <a href="http://blog.s135.com/tags/cabinet/" rel="tag">cabinet</a> , <a href="http://blog.s135.com/tags/tc/" rel="tag">tc</a> , <a href="http://blog.s135.com/tags/memcached/" rel="tag">memcached</a> , <a href="http://blog.s135.com/tags/linux/" rel="tag">linux</a> , <a href="http://blog.s135.com/tags/mysqludf/" rel="tag">mysqludf</a> , <a href="http://blog.s135.com/tags/mysql/" rel="tag">mysql</a> , <a href="http://blog.s135.com/tags/http/" rel="tag">http</a> , <a href="http://blog.s135.com/tags/cache/" rel="tag">cache</a> , <a href="http://blog.s135.com/tags/select/" rel="tag">select</a> , <a href="http://blog.s135.com/tags/insert/" rel="tag">insert</a> , <a href="http://blog.s135.com/tags/delete/" rel="tag">delete</a> , <a href="http://blog.s135.com/tags/update/" rel="tag">update</a>
]]>
</description>
</item>
</channel>
</rss>