9月 172010
 

搞了两天,综合网上优秀BLOG并且联系实际整理了下 Apache Mysql 的优化,虽然不一定适合每一个人,但里面的一些参数自己可以自己琢磨测试.不过Apache感觉不怎么样,爷爷的 15分钟在线 2000多IP就卡得不得了,每天90多W PV 都卡,看了下163他们的网络架构,不管是前端还是源段服务器都全是NGINX,看样子以后还得继续努力学习了,

Apache优化

KeepAlive On

KeepAliveTimeout 10


    StartServers          5
    MinSpareServers       10
    MaxSpareServers      20
    ServerLimit          1000
    MaxClients          1000
    MaxRequestsPerChild   10000

主要优化这几个参数,在服务器完全可以承受访问量的时候建议把KeepAlive设置为 on,但网上很多人设置了on但是KeepAliveTime设置为 3-5秒,我认为这样设置根本就没有效果,还不如KeepAlive设置为off,打开一个网页算快也要2秒,人家不可能看3秒又去打开新页面,所以这样设置个人觉得不科学,至少也要10秒,建议使用默认的15秒,如果服务器压力太大可以尝试KeepAlive设置off,以减少一些无效连接,

并发计算参考公式: Continue reading »

9月 172010
 

变量名说明 Qcache_free_blocks 缓存中相邻内存块的个数。数目大说明可能有碎片。FLUSH QUERY CACHE 会对缓存中的碎片进行整理,从而得到一个空闲块。 Qcache_free_memory 缓存中的空闲内存。 Qcache_hits 每次查询在缓存中命中时就增大。

Qcache_inserts 每次插入一个查询时就增大。命中次数除以插入次数就是不中比率;用 1 减去这个值就是命中率。在上面这个例子中,大约有 87% 的查询都在缓存中命中。 Qcache_lowmem_prunes 缓存出现内存不足并且必须要进行清理以便为更多查询提供空间的次数。这个数字最好长时间来看;如果这个数字在不断增长,就表示可能碎片非常严重,或者内存很少。(上面的 free_blocks 和 free_memory 可以告诉您属于哪种情况)。 Qcache_not_cached 不适合进行缓存的查询的数量,通常是由于这些查询不是 SELECT 语句。 Qcache_queries_in_cache 当前缓存的查询(和响应)的数量。 Qcache_total_blocks 缓存中块的数量。

通常,间隔几秒显示这些变量就可以看出区别,这可以帮助确定缓存是否正在有效地使用。运行 FLUSH STATUS 可以重置一些计数器,如果服务器已经运行了一段时间,这会非常有帮助。

使用非常大的查询缓存,期望可以缓存所有东西,这种想法非常诱人。由于 mysqld 必须要对缓存进行维护,例如当内存变得很低时执行剪除,因此服务器可能会在试图管理缓存时而陷入困境。作为一条规则,如果 FLUSH QUERY CACHE 占用了很长时间,那就说明缓存太大了。 Continue reading »

9月 172010
 

Apache 2.0在性能上的改善最吸引人。在支持POSIX线程的Unix系统上,Apache可以通过不同的MPM运行在一种多进程与多线程相混合的模式下,增强部分配置的可扩充性能。相比于Apache 1.3,2.0版本做了大量的优化来提升处理能力和可伸缩性,并且大多数改进在默认状态下即可生效。但是在编译和运行时刻,2.0也有许多可以显著提高性能的选择。本文不想叙述那些以功能换取速度的指令,如HostnameLookups等,而只是说明在2.0中影响性能的最核心特性:MPM(Multi -Processing Modules,多道处理模块)的基本工作原理和配置指令。

  毫不夸张地说,MPM的引入是Apache 2.0最重要的变化。大家知道,Apache是基于模块化的设计,而Apache 2.0更扩展了模块化设计到Web服务器的最基本功能。服务器装载了一种多道处理模块,负责绑定本机网络端口、接受请求,并调度子进程来处理请求。扩展模块化设计有两个重要好处: Continue reading »

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 »

10月 192009
 

来源:搜索优化每天一帖

经常在博客评论和SEO论坛里看到比较不好回答的一类问题:“具体怎么做呢?” – 就算帖子或文章其实说的已经挺详细了,还是有人会问具体怎么做。

对新手来说,除非你帮他优化好,不然他可能就是不清楚该怎么入手。

当然,不可能谁问怎么做,都告诉他,他的页面该怎么优化。退而求其次,写写SEO案例可能是对新手的最直接帮助了。

今天就举一个网页标题标签写作的例子。这篇3年多前写的关于页面title写作技巧的帖子今天也还基本适用,可以和下面的例子联系起来看。

以亿枝客比较购物网为例。这个网站是上次厦门SMX大会时注意到的,最后网站诊断议程时被抽中做诊断,不过不是我诊断的。我在听邱工诊断时对这个多少有点无厘头的名称挺有印象 – 什么叫“亿枝”?也许就因为莫名其妙,才让人有印象。

亿枝客比较购物

这种比较购物网站在关键词布局上有个难点,就是基本上没有核心关键词,五花八门,什么都有,比当当卖得还全。要说有主要关键词的话,那就是首页的 “网上购物”,这是和淘宝、京东等竞争,几乎没有赢的可能性。所以首页关键词属于听天由命,分类页面反倒需要更精心安排,还有点希望能排上去。 Continue reading »

10月 232008
 

作者:涅磐&杨振秋

一般而言,搜索引擎只识读文本内容,对图像是不可见的。同时,图像文件直接延缓页面加载时间,如果超过20秒网站还不能加载,用户和搜索引擎极有可能离开你的网站。因此,除非网站内容是以图片为主,比如游戏站点或者图片至关重要,否则尽量避免使用大图片,更不要采甩纯图像制作网页(SplashPage)。

网站图片优化的核心有两点。增加搜索引擎可见的文本描述,以及在保持图像质量的情况下尽量压缩图像的文件大小。

1.Alt属性

每个图像Img标签中都有Alt属性,例如:imgsrc=“seo.com.cn/images/logo_about.gif”alt=“杭州搜索引擎优化服务商”/,搜索引擎会读取该属性以了解图像的信息。因此,最好在所有插图的Alt属性中都有文字描述,并带上该页关键字在其中。

2.文本说明

除了Alt属性文字,还可以考虑以下方法直接优化图像,使之能够被搜索到:

(1)在图片上方或下方加上包含关键词的描述文本。

(2)在代码中增加一个包含关键词段的heading标题标签,然后在图片下方增加文字描述。

(3)在图片下方或旁边增加如“更多……”链接,包含关键词。

(4)创建一些既吸引用户又吸引搜索引擎的文本内页,先把流量吸引到这些页面,再提供文本链接指向你的图片页面。

总之,网页应尽量减少装饰性图片以及大图片。而Aft属性中的文字对搜索引擎来说,其重要性比正文内容的文字要低。 Continue reading »

9月 082008
 

一般来说,WinNT系统下使用IIS,而Apache在Linux下应用的比较多,但是依然有很多人在WinNT系统下使用Apache而非IIS,可能是基于对Windows系统的熟悉吧。今天就来说一下在Windows系统下如果优化Apache的性能。

mpm_winnt.c是专门针对Windows NT优化的MPM(多路处理模块),它使用一个单独的父进程产生一个单独的子进程,在这个子进程轮流产生多个线程来处理请求。也就是说mpm_winnt只能启动父子两个进程, 不能像Linux下那样同时启动多个进程。

mpm_winnt主要通过ThreadsPerChild和MaxRequestsPerChild两个参数来优化Apache,下面详细来说明一下。

ThreadsPerChild
这个参数用于设置每个进程的线程数, 子进程在启动时建立这些线程后就不再建立新的线程了. 一方面因为mpm_winnt不能启动多个进程, 所以这个数值要足够大,以便可以处理可能的请求高峰; 另一方面该参数以服务器的响应速度为准的, 数目太大的反而会变慢。因此需要综合均衡一个合理的数值。

mpm_winnt上的默认值是64, 最大值是1920. 这里建议设置为100-500之间,服务器性能高的话值大一些,反之值小一些。

MaxRequestsPerChild
该参数表示每个子进程能够处理的最大请求数, 即同时间内子进程数目.设置为零表示不限制, mpm_winnt上的默认值就是0.

方参考手册中不建议设置为0, 主要基于两点考虑: (1) 可以防止(偶然的)内存泄漏无限进行,从而耗尽内存; (2) 给进程一个有限寿命,从而有助于当服务器负载减轻的时候减少活动进程的数量。 Continue reading »