9月 172010
 

Memcached是danga.com(运营LiveJournal的技术团队)开发的一套分布式内存对象缓存系统,用于在动态系统中减少数据库负载,提升性能。关于这个东西,相信很多人都用过,本文意在通过对memcached的实现及代码分析,获得对这个出色的开源软件更深入的了解,并可以根据我们的需要对其进行更进一步的优化。末了将通过对BSM_Memcache扩展的分析,加深对memcached的使用方式理解。

本文的部分内容可能需要比较好的数学基础作为辅助。

◎Memcached是什么

在阐述这个问题之前,我们首先要清楚它“不是什么”。很多人把它当作和SharedMemory那种形式的存储载体来使用,虽然memcached使用了同样的“Key=>Value”方式组织数据,但是它和共享内存、APC等本地缓存有非常大的区别。Memcached是分布式的,也就是说它不是本地的。它基于网络连接(当然它也可以使用localhost)方式完成服务,本身它是一个独立于应用的程序或守护进程(Daemon方式)。

Memcached 使用libevent库实现网络连接服务,理论上可以处理无限多的连接,但是它和Apache不同,它更多的时候是面向稳定的持续连接的,所以它实际的并发能力是有限制的。在保守情况下memcached的最大同时连接数为200,这和Linux线程能力有关系,这个数值是可以调整的。关于 libevent可以参考相关文档。 Memcached内存使用方式也和APC不同。APC是基于共享内存和MMAP的,memcachd有自己的内存分配算法和管理方式,它和共享内存没有关系,也没有共享内存的限制,通常情况下,每个memcached进程可以管理2GB的内存空间,如果需要更多的空间,可以增加进程数。

◎Memcached适合什么场合

在很多时候,memcached都被滥用了,这当然少不了对它的抱怨。我经常在论坛上看见有人发贴,类似于“如何提高效率”,回复是“用memcached”,至于怎么用,用在哪里,用来干什么一句没有。memcached不是万能的,它也不是适用在所有场合。

Memcached 是“分布式”的内存对象缓存系统,那么就是说,那些不需要“分布”的,不需要共享的,或者干脆规模小到只有一台服务器的应用,memcached不会带来任何好处,相反还会拖慢系统效率,因为网络连接同样需要资源,即使是UNIX本地连接也一样。 在我之前的测试数据中显示,memcached本地读写速度要比直接PHP内存数组慢几十倍,而APC、共享内存方式都和直接数组差不多。可见,如果只是本地级缓存,使用memcached是非常不划算的。 Continue reading »

9月 172010
 

开源的LAMP (linux/Apache/Mysql/PHP) 平台是流行的web application platform,不少网站,包括海归网都是建立在此平台上.

在帮助海归网正式转移到LAMP平台之前, 笔者虽然长期做网站设计和开发方面的工作,但主要是在J2EE 或者 ASP.NET /ASP方面的应用, 具体是在application 层面, 架构设计主要考虑功能/可扩充性和scalability, 而网站反应速度/性能方面一般不是问题–或者流量不大,或者硬件架构足够强(hardware load balancer, cluster, dedicated web/middle tier/DB tier/team等). 在海归网, 让我有机会在LAMP环境下接触和学习到许多以前做应用或自己玩操作系统时难以接触到的问题– 除了系统和网络管理外, 有许多是关于性能优化和scalability方面的.

在这篇里分享一点积攒的LAMP环境下PHP网站的性能优化经验. (谢谢老狼和海归网提供的给我一个发挥点业余爱好的机会); 以后有时间谈谈scalability/availability等.

有许多中小网站都和海归网一样只有一台服务器(海归网有一台dedictaed的dell, 更多更差的网站shared hosting的则是几十几百个网站公用一台server), 而这台服务器需要身兼web server, application server,database server, firewall等等所有一切功能…在网站建设的初期只能在有限的硬件条件下最大限度地进行优化充分利用所有的资源保证基本的功能/性能和稳定性.

1. 编译php/apache/mysql 时的优化选项

一般来说, 用不着自己编译这些东西,直接下载binary packages就可以了–无论是debian 的apt-get 还是redhat的rpm /yum. 但是这些现成的安装包编译时一般并未根据你的服务器硬件配置做优化, 而通过选择合适的C编译器 flags 和其他选项,自己编译往往能使总体性能提高几个到几十个百分点. Continue reading »

6月 212010
 

为什么会有南北互访困难的问题?

    由于我国目前的网络ISP运营商有中国电信和中国网通, 两者都有大量的用户。有一定网龄的人基本都知道“南电信”、“北网通”的说法, 这几年随着网通的逐渐壮大, 网通用户规模还在越来越大,北方很多省市(北京、河北、山东、辽宁、吉林等)的用户主要是通过网通接入上网;而南方大部分用户是通过电信接入上网,(现在南方网通用户也慢慢多起来), 而两大网络运营商之间的连接带宽比较有限,虽然两者每年都在增加互连带宽,但还是远远跟不上互联网发展的速度,因此也就形成了南北两地用户由于电信和网通的互联互通瓶颈,电信用户访问网通服务器 、网通用户访问电信服务器都很慢, 一般电信用户访问采用电信线路的网站的速度是非常快的(ping数据在几十MS之间, 并且掉包很少);而跨网之间的访问 非常慢(ping数据在200MS以上,并且有大量掉包 ),这样导致网站运营者的站点无论放在电信机房还是网通机房,都会丢失另一半潜在的客户--如果网站放在电信机房,那么势必丢失网通的用户;而如果网站放在网通机房 ,就会丢失电信用户。

    那么, 电信网通互联情况的糟糕程度从哪几个方面可以看出来?我们不妨采用一组实测的数据来说明: Continue reading »

4月 182010
 

首先,介绍一下ftp关于主动模式与被动模式的原理:

这一部分有什么作用? 如果你是在内网搭建一个ftp服务器进行测试,那么不必关注,那是很容易的,内网的机子之间一般没有防火墙所以无关于主动模式和被动模式,但是在生产环境中,ftp服务器与客户端之间一般不止一个防火墙,所以有必要弄清楚这个原理。

FTP是File Transfer Protocol(文件传输协议)的缩写,用来在两台计算机之间互相传送文件。相比于HTTP,FTP协议要复杂得多。复杂的原因,是因为FTP协议要用到两个TCP连接,一个是命令链路,用来在FTP客户端与服务器之间传递命令;另一个是数据链路,用来上传或下载数据。

FTP协议有两种工作方式:PORT方式和PASV方式,中文意思为主动式和被动式。

PORT(主动)方式的连接过程是:客户端向服务器的FTP端口(默认是21)发送连接请求,服务器接受连接,建立一条命令链路。当需要传送数据时,客户端在命令链路上用PORT命令告诉服务器:“我打开了XXXX端口,你过来连接我”。于是服务器从20端口向客户端的XXXX端口发送连接请求,建立一条数据链路来传送数据。

PASV(被动)方式的连接过程是:客户端向服务器的FTP端口(默认是21)发送连接请求,服务器接受连接,建立一条命令链路。当需要传送数据时,服务器在命令链路上用PASV命令告诉客户端:“我打开了XXXX端口,你过来连接我”。于是客户端向服务器的XXXX端口发送连接请求,建立一条数据链路来传送数据。

概括一下就是:
主动模式:服务器向客户端敲门,然后客户端开门
被动模式:客户端向服务器敲门,然后服务器开门 Continue reading »

9月 122008
 

ZDNet 服务器频道 更新时间:2008-08-18

  几天前在某QQ群,有人和笔者讨论起来,为什么有的服务器主板可以使用普通内存,而有些服务器主板插入普通内存根本就点不亮,我想这个问题也是很多初级DIY服务器朋友的疑惑之处,趁着这次机会,就详细的说明一下。

  我们都知道,在INTEL平台,北桥负责与CPU的联系,并控制内存、AGP、PCI数据在北桥内部传输。基本上只要主板芯片组确定,那么其支持的内存类型也就确定了。在介绍主板的时候,我们已经说过,INTEL芯片组划分的很清楚,865PE属于工作站级别芯片组,不支持ECC内存,只能使用普通内存,875P芯片组属于低端服务器/工作站级别,支持ECC内存和普通非ECC内存,而E7525属于高端服务器,为了保证其稳定性,必须采用ECC REG内存,使用其他内存无法点亮。在AMD方面,K8 CPU集成了内存控制器,CPU与内存直接交换数据,不通过北桥。939针的ALTHON 64系列不支持ECC,所以只能用普通内存,939针的OPTERON支持ECC内存和普通非ECC内存,940针的OPTERON系列只能使用ECC REG内存,插入普通内存无法点亮。

  普通内存 ECC内存与 REG ECC内存有什么不同?

  普通内存大家经常接触,DDR400的内存现在遍地都是,很多高档内存甚至可以运行DDR600/DDR2 800,而有些内存也可以达到2-2-2-5这样低的延迟,因为大家接触的比较多,这里就暂不作介绍了。 反观ECC和REG ECC内存不追求高频率和低延迟,INTLE平台内存运行频率一般在DDR333或者是DDR2 400,,AMD平台内存运行频率在DDR400,延时也多在4-4-4-8左右,从性能上看丝毫不占优势,但是稳定才是其立足的根本。图为DDR2 ECC内存。这里我们常说的ECC内存就是单指的 Unbuffer ECC,其价格和普通内存相比只贵10%-20%,从外观来说,Unbuffer ECC内存因为要满足效验纠错的需要,加入了一颗ECC效验颗粒,由于采用的是TOSP封装,使得内存看上去每面有9颗内存颗粒。 Continue reading »

9月 102008
 

出处:天极网 2007-01

  通常在企业选购双路Xeon服务器时,厂商给我们的标准配置都是一块CPU,在加装第二块CPU时有很多细节需要注意,今天笔者就向各位读者介绍在双路服务器上加装第二块CPU时需要遵循的原则和诸多注意事项。

  一、安装第二块CPU:

  要将自己的服务器升级到两块CPU,首先需要考虑的是第二块CPU的技术参数,这点是非常关键的,直接决定第二块CPU是否能够与之前的CPU顺利协同工作。选购时需要把握以下几个原则。

  (1)双路Xeon服务器在使用时,两个CPU的类型必须一样:重要性★★★★★

  由于支持双服务器的两个CPU插槽种类都是一样的,所以再为服务器添加第二块CPU时也要按照原CPU的针脚去选择。

  小提示:

  有的双CPU主板在只用单CPU时,另一个空的CPU插槽需装一块特殊的“终结卡”,所以在安装第二块CPU时要记得把这个终结卡取掉。

  (2)双路Xeon服务器在使用时,两CPU的系统总线频率必须一致:重要性★★★★★ Continue reading »

11月 022007
 

  企业网站推广需要走以下几个步骤:1.空间域名的选择2.网站建设服务3.网站推广服务4.后期维护从今天起我们开始介绍企业网站推广的系列文章。今天先介绍网站域名和空间服务器的选择

  一个营销型企业网站推广在除了网页设计的时候要贯彻优化思想外,网站建设之初即选择空间域名的时候就应该从搜索引擎优化的角度出发进行域名和域名的选择。

  下面我们谈下企业网站推广如何进行空间和域名的选择:

  一、网站域名的选择

  1、域名注册商的选择:这点无关紧要实则暗藏玄机,现在很多域名服务商都不够标准今天这个公司还存在着明天就以公司倒闭为由进行服务上的扯皮,还有些服务商注册域名时域名所有人填写其公司的信息。

  建议:选择在行业内存在时间较长的口碑好的服务商。 Continue reading »