Hunter的大杂烩

二月 17, 2009

【转】LAMP 系统性能调优,第 1 部分: 理解 LAMP 架构

类归于: Linux, php — hunter @ 11:32 上午

from: http://www.phpv.net/html/1546.html

 

度量性能

持续地对性能进行度量在两个方面有帮助。首先,度量可以帮助了解性能趋势,包括好坏两方面的趋势。作为一个简单的方法,查看一下 Web 服务器上的中央处理单元(CPU)使用率,就可以了解 CPU 是否负载过重。同样,查看过去使用的总带宽并推断未来的变化,可以帮助判断什么时候需要进行网络升级。这些度量最好与其他度量和观测结合考虑。例如,当用户抱怨应用程序太慢时,可以检查磁盘操作是否达到了最大容量。

性能度量的第二个用途是,判断调优是对系统性能有帮助,还是使它更糟糕了。方法是比较修改之前和之后的度量结果。但是,为了进行有效的比较,每次应该只修改一个设置,然后对适当的指标进行比较以判断修改的效果。每次只修改一个设置的原因应该是很明显的:同时做出的两个修改很可能会相互影响。选择用来进行比较的指标比较微妙。

选择的指标必须能够反映应用程序用户感觉到的响应。如果一项修改的目标是减少数据库的内存占用量,那么取消各种缓冲区肯定会有帮助,但是这会牺牲查询速度和应用程序性能。所以,应该选择应用程序响应时间这样的指标,这会使调优向着正确的方向发展,而不仅仅是针对数据库内存使用量。

可以以许多方式度量应用程序响应时间。最简单的方法可能是使用 curl 命令,见清单 1

(全文…)

十二月 14, 2008

php lite

类归于: HHTE, Linux — hunter @ 2:00 上午

从php3中扣出来的一部份代码,遵从“超越模板”的思想,只支持最简单的语法(因为for语法搞不定,临时“创造”了一个repeat语法代替),主要用来将model里的数据传递给模板,并将模板渲染出来,下载地址:

(全文…)

六月 8, 2008

MySQL可靠性方案分析与比较

类归于: Linux — hunter @ 12:39 上午

mysql cluster的方案据说在5.1里面有较大的提升 

from: http://leftleg.hzpub.com/read.php?670

 

从基本情况、成本、优缺点和应用场合等方面对5种MySQL的可靠性方案进行了分析和比较,对MySQL的开发和管理有一定的借鉴作用。

1.MySQL Clustering(ndb-cluster stogare)

简介:
MySQL公司以存储引擎方式提供的高可靠性方案,是事务安全的,实时复制数据,可用于需要高可靠性及负载均衡的场合。该方案至少需要三个节点服务器才能达到较好的效果。

成本:
节点服务器对RAM的需求很大,与数据库大小呈线性比例;
最好使用千兆以太网络;
还需要使用Dolphin公司提供的昂贵的SCI卡。

优点:
可用于负载均衡场合;
可用于高可靠性场合;
高伸缩性;
真正的数据库冗余;
容易维护。

缺点:
随着数据库的变大,对RAM的需求变得更大,因此成本很高;

速度:
几乎 比典型的单独服务器(无千兆以太网,无SCI卡,存储引擎相关的限制少)慢10倍。

应用场合:
冗余,高可靠性,负载均衡

(全文…)

十二月 14, 2007

google template build under g++ 2.95

类归于: C++, Linux — hunter @ 2:49 下午

几个小patch,用来解决在2.95下编译ctemplate的问题 

1. template_dictionary.cc

 line 306

  // modify by hunter: slk8 dosn’t have va_copy function
#if 0
  va_list backup_ap;
  va_copy(backup_ap, ap);
  int result = vsnprintf(space, sizeof(space), format, backup_ap);
  va_end(backup_ap);
#else
  int result = vsnprintf(space, sizeof(space), format, ap);
#endif
 line 332

(全文…)

五月 30, 2007

关于库版本依赖的解决方案思考

类归于: C++, Linux — hunter @ 3:06 下午

 

 

     最近在研究library版本依赖的问题:

     假如 Library A 和B 编译的时候依赖 Library C,而A/B编译的时间各不相同,

所以它们编译时所链接的C的版本不一样,这样,当有一个程序同时链接 library A/B/C

的时候,就会运行异常

 

    我想到一个解决方案,如果有方法在library C的头文件中声明一个特殊的变量或者函数,
这个变量必须被引用者实现或者调用,那么就可以强迫在链接期发现库文件版本不一致的情况了

比如:
     c.h

     #define VER 1    
     void specialFunction_Version_VER();

     c.cpp
     void specialFunction_Version_VER() {}

     nm libraryC.a
     T specialFunction_Version_1
    
     a.cpp
     #include c.h
    
     void auto_call() { specialFunction_Version_VER(); }

     nm libraryA.a
     U specialFunction_Version_1
     如果升级了 c.h 中的 ver,那么会导致老libraryA中的引用失效,使得编译期报错,
     及时发现隐患

     现在主要问题是,auto_call里面的函数列表是人工维护的,如果依赖的库多了,维护不方便,
     有无办法让 auto_call中的调用是自动的?

 

 

早前文章 »

WordPress 所驱动