使用mysqlslap进行MySQL压力测试

MySQL从5.1.4版开始带有一个压力测试工具mysqlslap,通过模拟多个并发客户端访问mysql来执行测试,使用起来非常的简单。通过mysqlslap –help可以获得可用的选项,这里列一些主要的参数,更详细的说明参考官方手册

  1. –auto-generate-sql, -a
  2. 自动生成测试表和数据
  3.  
  4. –auto-generate-sql-load-type=type
  5. 测试语句的类型。取值包括:read,key,write,update和mixed(默认)。
  6.  
  7. –number-char-cols=N, -x N
  8. 自动生成的测试表中包含多少个字符类型的列,默认1
  9.  
  10. –number-int-cols=N, -y N
  11. 自动生成的测试表中包含多少个数字类型的列,默认1
  12.  
  13. –number-of-queries=N
  14. 总的测试查询次数(并发客户数×每客户查询次数)
  15.  
  16. –query=name,-q
  17. 使用自定义脚本执行测试,例如可以调用自定义的一个存储过程或者sql语句来执行测试。
  18.  
  19. –create-schema
  20. 测试的schema,MySQL中schema也就是database
  21.  
  22. –commint=N
  23. 多少条DML后提交一次
  24.  
  25. –compress, -C
  26. 如果服务器和客户端支持都压缩,则压缩信息传递
  27.  
  28. –concurrency=N, -c N
  29. 并发量,也就是模拟多少个客户端同时执行select。可指定多个值,以逗号或者–delimiter参数指定的值做为分隔符
  30.  
  31. –engine=engine_name, -e engine_name
  32. 创建测试表所使用的存储引擎,可指定多个,用分隔符隔开。
  33.  
  34. –iterations=N, -i N
  35. 测试执行的迭代次数
  36.  
  37. –detach=N
  38. 执行N条语句后断开重连
  39.  
  40. –debug-info, -T
  41. 打印内存和CPU的信息
  42.  
  43. –only-print
  44. 只打印测试语句而不实际执行
  45.  
  46. –defaults-file
  47. 配置文件存放位置
  48.  
  49. –socket=name,-S
  50. 指定socket文件位置

一些实例
  用自动生成的测试数据进行测试,且只打印实际的测试过程。

  1. # /usr/local/webserver/mysql/bin/mysqlslap  -a –only-print
  2. DROP SCHEMA IF EXISTS `mysqlslap`;
  3. CREATE SCHEMA `mysqlslap`;
  4. use mysqlslap;
  5. CREATE TABLE `t1` (intcol1 INT(32) ,charcol1 VARCHAR(128));
  6. INSERT INTO t1 VALUES (1804289383,’mxvtvmC9127qJNm06sGB8R92q2j7vTiiITRDGXM9ZLzkdekbWtmXKwZ2qG1llkRw5m9DHOFilEREk3q7oce8O3BEJC0woJsm6uzFAEynLH2xCsw1KQ1lT4zg9rdxBL’);
  7. INSERT INTO t1 VALUES (822890675,’97RGHZ65mNzkSrYT3zWoSbg9cNePQr1bzSk81qDgE4Oanw3rnPfGsBHSbnu1evTdFDe83ro9w4jjteQg4yoo9xHck3WNqzs54W5zEm92ikdRF48B2oz3m8gMBAl11W’);
  8. ……
  9. INSERT INTO t1 VALUES (100669,’qnMdipW5KkXdTjGCh2PNzLoeR0527frpQDQ8uw67Ydk1K06uuNHtkxYBxT5w8plb2BbpzhwYBgPNYX9RmICWGkZD6fAESvhMzH3yqzMtXoH4BQNylbK1CmEIPGYlC6′);
  10. SELECT intcol1,charcol1 FROM t1;
  11. INSERT INTO t1 VALUES (73673339,’BN3152Gza4GW7atxJKACYwJqDbFynLxqc0kh30YTwgz3FktQ43XTrqJ4PQ25frn7kXhfXD8RuzN1j8Rf3y8ugKy6es3IbqPJM6ylCyD6xS7YcQCfHKZxYNvB7yTahm’);
  12. DROP SCHEMA IF EXISTS `mysqlslap`;

分别100和200个并发,执行1000次总查询

  1. $mysqlslap -a –concurrency=50,100 –number-of-queries 1000 –debug-info
  2.  
  3. # /usr/local/webserver/mysql/bin/mysqlslap  -a –concurrency=100,200 –number-of-queries 1000 –debug-info
  4.  
  5. Benchmark
  6. Average number of seconds to run all queries: 0.232 seconds
  7. Minimum number of seconds to run all queries: 0.232 seconds
  8. Maximum number of seconds to run all queries: 0.232 seconds
  9. Number of clients running queries: 100
  10. Average number of queries per client: 10
  11.  
  12. Benchmark
  13. Average number of seconds to run all queries: 0.268 seconds
  14. Minimum number of seconds to run all queries: 0.268 seconds
  15. Maximum number of seconds to run all queries: 0.268 seconds
  16. Number of clients running queries: 200
  17. Average number of queries per client: 5
  18.  
  19.  
  20. User time 0.02, System time 0.49
  21. Maximum resident set size 6100, Integral resident set size 0
  22. Non-physical pagefaults 3165, Physical pagefaults 0, Swaps 0
  23. Blocks in 0 out 0, Messages in 0 out 0, Signals 0
  24. Voluntary context switches 3102, Involuntary context switches 7541

分别200和400个并发,执行2000次总查询并迭代8次

  1. # /usr/local/webserver/mysql/bin/mysqlslap -a   –concurrency=200,400 –number-of-queries 2000 –iterations=8  –debug-info
  2.  
  3. Benchmark
  4. Average number of seconds to run all queries: 0.657 seconds
  5. Minimum number of seconds to run all queries: 0.603 seconds
  6. Maximum number of seconds to run all queries: 0.736 seconds
  7. Number of clients running queries: 200
  8. Average number of queries per client: 10
  9.  
  10. Benchmark
  11. Average number of seconds to run all queries: 0.711 seconds
  12. Minimum number of seconds to run all queries: 0.648 seconds
  13. Maximum number of seconds to run all queries: 0.860 seconds
  14. Number of clients running queries: 400
  15. Average number of queries per client: 5
  16.  
  17.  
  18. User time 0.58, System time 9.12
  19. Maximum resident set size 30764, Integral resident set size 0
  20. Non-physical pagefaults 92471, Physical pagefaults 0, Swaps 0
  21. Blocks in 0 out 0, Messages in 0 out 0, Signals 0
  22. Voluntary context switches 99629, Involuntary context switches 157741

同时测试不同的存储引擎

  1. # /usr/local/webserver/mysql/bin/mysqlslap -a   –concurrency=200,400 –number-of-queries 2000 –iterations=8  –engine=myisam,innodb  –debug-info
  2.  
  3. Benchmark
  4. Average number of seconds to run all queries: 0.740 seconds
  5. Minimum number of seconds to run all queries: 0.678 seconds
  6. Maximum number of seconds to run all queries: 0.827 seconds
  7. Number of clients running queries: 200
  8. Average number of queries per client: 10
  9.  
  10. Benchmark
  11. Average number of seconds to run all queries: 0.696 seconds
  12. Minimum number of seconds to run all queries: 0.661 seconds
  13. Maximum number of seconds to run all queries: 0.775 seconds
  14. Number of clients running queries: 400
  15. Average number of queries per client: 5
  16.  
  17.  
  18. User time 0.62, System time 9.27
  19. Maximum resident set size 33368, Integral resident set size 0
  20. Non-physical pagefaults 89594, Physical pagefaults 0, Swaps 0
  21. Blocks in 0 out 0, Messages in 0 out 0, Signals 0
  22. Voluntary context switches 98328, Involuntary context switches 153787

指定数据库的测试

  1. # /usr/local/webserver/mysql/bin/mysqlslap  –concurrency=500 –iterations=8 –create-schema=test –query=/root/test.sql
  2.  
  3. Benchmark
  4. Average number of seconds to run all queries: 0.343 seconds
  5. Minimum number of seconds to run all queries: 0.283 seconds
  6. Maximum number of seconds to run all queries: 0.525 seconds
  7. Number of clients running queries: 500
  8. Average number of queries per client: 1

转自:http://www.mike.org.cn/articles/mysql-stress-tests-conducted-by-mysqlslap/

MySQL查询缓存设置 提高MySQL查询性能

从 MySQL4开始,出现了QueryCache查询缓存,如果使用了QueryCache,当查询接收到一个和之前同样的查询,服务器将会从查询缓存种检索结果,而不是再次分析和执行上次的查询。这样就大大提高了性能,节省时间,非常有用。

打开查询缓存,是通过几个步骤来设置的,例如:虽然你设置Mysql允许查询缓存,但是如果你设置的查询缓存大小为了0,这和没有允许没什么区别。所以必须是几个步骤的设置才能真正打开查询缓存这个功能。

下面我用 mysql6.0 最为演示最常用的设置查询缓存
第一: query_cache_type 使用查询缓存的方式
一般,我们会把 query_cache_type 设置为 ON,默认情况下应该是ON

  1. mysql> select @@query_cache_type;

+——————–+
| @@query_cache_type |
+——————–+
| ON |
+——————–+
这样 当我们执行 select id,name from tableName; 这样就会用到查询缓存。在 query_cache_type 打开的情况下,如果你不想使用缓存,需要指明select sql_no_cache id,name from tableName;当然也可以禁用查询缓存: mysql> set session uery_cache_type=off;
这里我们不讨论这个,我们演示常用的设置。
第二: 系统变量 have_query_cache 设置查询缓存是否可用

  1. mysql> show variables like ‘have_query_cache’;

+——————+——-+
| Variable_name | Value |
+——————+——-+
| have_query_cache | YES |
+——————+——-+
上面的显示,表示设置查询缓存是可用的。
第三: 系统变量 query_cache_size
表示查询缓存大小,也就是分配内存大小给查询缓存,如果你分配大小为0,
那么 第一步 和 第二步 起不到作用,还是没有任何效果。

  1. mysql> select @@global.query_cache_size;

+—————————+
| @@global.query_cache_size |
+—————————+
| 16777216 |
+—————————+
上面是 mysql6.0设置默认的,之前的版本好像默认是0的,那么就要自己设置下。
设置 set @@global.query_cache_size=1000000; 这里是设置1M左右,900多K。
再次查看下 select @@global.query_cache_size;
+—————————+
| @@global.query_cache_size |
+—————————+
| 999424 |
+—————————+
显示我们设置新的大小,表示设置成功。
第四: query_cache_limit 控制缓存查询结果的最大值
例如: 如果查询结果很大, 也缓存????这个明显是不可能的。
MySql 可以设置一个最大的缓存值,当你查询缓存数结果数据超过这个值就不会
进行缓存。缺省为1M,也就是超过了1M查询结果就不会缓存。

  1. mysql> select @@global.query_cache_limit;

+—————————-+
| @@global.query_cache_limit |
+—————————-+
| 1048576 |
+—————————-+
这个是默认的数值,如果需要修改,就像设置缓存大小一样设置,使用set重新指定大小。
好了,通过4个步骤就可以 打开了查询缓存,具体值的大小和查询的方式 这个因不同的情况来指定了。
有关MySQL查询缓存更详细的介绍请看:http://dev.mysql.com/doc/refman/5.1/zh/database-administration.html#query-cache
转自:http://hi.baidu.com/aganle/blog/item/49e4703983110b2cb9998f7c.html

wordpress评论与回复慢的原因及解决方法

博客回复读者的评论发现都超过30秒,一直懒得理。今天连续回复几条评论,发现实在无法忍受了,就开始着手解决这一问题。
1、是不是评论的程序代码有问题?可以排除,因为一回复读者评论,后台马上显示回复内容,只是浏览器一直显示正在提交评论…
2、开始查看vps的进程,发现有一个以用户apache运行的sendmail进程,这个应该可以确认是sendmail的问题。
3、查看sendmail日志。日志如下:
My unqualified host name (centos) unknown; sleeping for retry
unable to qualify my own domain name (centos) — using short name
大概的意思是:centos不是完整的主机名,无法使用,等待重试。
原因:因为centos不是完整的主机名,所以sendmail无法解析出IP,sendmail就一直尝试解析,导致http连接无法结束,一直到sendmail进程超时。
解决方法:
1、设置完整的主机名(重启后会丢失):

  1. hostname devops.webres.wang

2、永久设置主机名
修改/etc/sysconfig/network文件,把hostname centos改为hostname devops.webres.wang

Linux 内存机制

一. 内存使用说明

Free 命令相对于top 提供了更简洁的查看系统内存使用情况:

[root@rac1 ~]# free
total used free shared buffers cached
Mem: 1035108 1008984 26124 0 124212 413000
-/+ buffers/cache: 471772 563336
Swap: 2096472 842320 1254152

这里显示的单位是KB。

在linux的内存分配机制中,优先使用物理内存,当物理内存还有空闲时(还够用),不会释放其占用内存,就算占用内存的程序已经被关闭了,该程序所占用的内存用来做缓存使用,对于开启过的程序、或是读取刚存取过得数据会比较快。

Mem:表示物理内存统计。
-/+ buffers/cached:表示物理内存的缓存统计
Swap:表示硬盘上交换分区的使用情况。只有mem被当前进程实际占用完,即没有了buffers和cache时,才会使用到swap。

Mem 行(第一行)数据说明:
Total:1035108KB。表示物理内存总大小。
Used:1008984KB。表示总计分配给缓存(包含buffers 与cache )使用的数量,但其中可能部分缓存并未实际使用。
Free:26124KB。表示未被分配的内存。
Shared:0kb。共享内存,一般系统不会用到。
Buffers:124212KB。系统分配但未被使用的buffers 数量。
Cached:413000KB。系统分配但未被使用的cache 数量。

-/+ buffers/cache 行(第二行)数据说明:
Used:471772kb,实际使用的buffers 与cache 总量,也是实际使用的内存总量。
Free: 563336kb, 未被使用的buffers 与cache 和未被分配的内存之和,这就是系统当前实际可用内存。

根据以上分析,可以得出一下结论:
1. 实际可用内存大小:
Free(-/+ buffers/cache行)= Free(Mem)+buffers(Mem)+Cached(Mem);
563336 = 26124 + 124212+ 413000

2. 已经分配的内存大小:
Used(Mem) = Used(-/+ buffers/cache)+ buffers(Mem) + Cached(Mem)
1008984kb = 471772 + 124212 +413000

3. 物理内存总大小
total(Mem) = used(-/+ buffers/cache) + free(-/+ buffers/cache)
1035108 = 471772 + 563336

二. Swap配置对性能的影响

分配太多的Swap空间会浪费磁盘空间,而Swap空间太少,则系统会发生错误。 如果系统的物理内存用光了,系统就会跑得很慢,但仍能运行;如果Swap空间用光了,那么系统就会发生错误。例如,Web服务器能根据不同的请求数量衍生出多个服务进程(或线程),如果Swap空间用完,则服务进程无法启动,通常会出现“application is out of memory”的错误,严重时会造成服务进程的死锁。因此Swap空间的分配是很重要的。

通常情况下,Swap空间应大于或等于物理内存的大小,最小不应小于64M,通常Swap空间的大小应是物理内存的2-2.5倍。但根据不同的应用,应有不同的配置:如果是小的桌面系统,则只需要较小的Swap空间,而大的服务器系统则视情况不同需要不同大小的Swap空间。特别是数据库服务器和Web服务器,随着访问量的增加,对Swap空间的要求也会增加,一般来说对于4G 以下的物理内存,配置2倍的swap,4G 以上配置1倍。

另外,Swap分区的数量对性能也有很大的影响。因为Swap交换的操作是磁盘IO的操作,如果有多个Swap交换区,Swap空间的分配会以轮流的方式操作于所有的Swap,这样会大大均衡IO的负载,加快Swap交换的速度。如果只有一个交换区,所有的交换操作会使交换区变得很忙,使系统大多数时间处于等待状态,效率很低。用性能监视工具就会发现,此时的CPU并不很忙,而系统却慢。这说明,瓶颈在IO上,依靠提高CPU的速度是解决不了问题的。

三. Linux 内存机制

Linux支持虚拟内存(Virtual Mmemory),虚拟内存是指使用磁盘当作RAM的扩展,这样可用的内存的大小就相应地增大了。内核会将暂时不用的内存块的内容写到硬盘上,这样一来,这块内存就可用于其它目的。当需要用到原始的内容时,它们被重新读入内存。这些操作对用户来说是完全透明的;Linux下运行的程序只是看到有大量的内存可供使用而并没有注意到时不时它们的一部分是驻留在硬盘上的。当然,读写硬盘要比直接使用真实内存慢得多(要慢数千倍),所以程序就不会象一直在内存中运行的那样快。用作虚拟内存的硬盘部分被称为交换空间(Swap Space)。

一般,在交换空间中的页面首先被换入内存;如果此时没有足够的物理内存来容纳它们又将被交换出来(到其他的交换空间中)。如果没有足够的虚拟内存来容纳所有这些页面,Linux就会波动而不正常;但经过一段较长的时间Linux会恢复,但此时系统已不可用了。
有时,尽管有许多的空闲内存,仍然会有许多的交换空间正被使用。这种情况是有可能发生的,例如如果在某一时刻有进行交换的必要,但后来一个占用很多物理内存的大进程结束并释放内存时。被交换出的数据并不会自动地交换进内存,除非有这个需要时。此时物理内存会在一段时间内保持空闲状态。对此并没有什么可担心的,但是知道了是怎么一回事,也就无所谓了。
许多操作系统使用了虚拟内存的方法。因为它们仅在运行时才需要交换空间,以解决不会在同一时间使用交换空间,因此,除了当前正在运行的操作系统的交换空间,其它的就是一种浪费。所以让它们共享一个交换空间将会更有效率。

注意:如果会有几个人同时使用这个系统,他们都将消耗内存。然而,如果两个人同时运行一个程序,内存消耗的总量并不是翻倍,因为代码页以及共享的库只存在一份。

Linux系统常常动不动就使用交换空间,以保持尽可能多的空闲物理内存。即使并没有什么事情需要内存,Linux也会交换出暂时不用的内存页面。这可以避免等待交换所需的时间:当磁盘闲着,就可以提前做好交换。可以将交换空间分散在几个硬盘之上。针对相关磁盘的速度以及对磁盘的访问模式,这样做可以提高性能。

与访问物理内存相比,磁盘的读写是很慢的。另外,在相应较短的时间内多次读磁盘同样的部分也是常有的事。例如,某人也许首先阅读了一段E-mail消息,然后为了答复又将这段消息读入编辑器中,然后又在将这个消息拷贝到文件夹中时,使得邮件程序又一次读入它。或者考虑一下在一个有着许多用户的系统中 ls命令会被使用多少次。通过将信息从磁盘上仅读入一次并将其存于内存中,除了第一次读以外,可以加快所有其它读的速度。这叫作磁盘缓冲(Disk Buffering),被用作此目的的内存称为高速缓冲(Buffer Cache)。但是,由于内存是一种有限而又不充足的资源,高速缓冲不可能做的很大(它不可能包容要用到的所有数据)。当缓冲充满了数据时,其中最长时间不用的数据将被舍弃以腾出内存空间用于新的数据。

对写磁盘操作来说磁盘缓冲技术同样有效。一方面,被写入磁盘的数据常常会很快地又被读出(例如,原代码文件被保存到一个文件中,又被编译器读入),所以将要被写的数据放入缓冲中是个好主意。另一方面,通过将数据放入缓冲中,而不是将其立刻写入磁盘,程序可以加快运行的速度。以后,写的操作可以在后台完成,而不会拖延程序的执行。

大多数操作系统都有高速缓冲(尽管可能称呼不同),但是并不是都遵守上面的原理。有些是直接写(Write-Through):数据将被立刻写入磁盘(当然,数据也被放入缓存中)。如果写操作是在以后做的,那么该缓存被称为后台写(Write-Back)。后台写比直接写更有效,但也容易出错:如果机器崩溃,或者突然掉电,缓冲中改变过的数据就被丢失了。如果仍未被写入的数据含有重要的薄记信息,这甚至可能意味着文件系统(如果有的话)已不完整。

针对以上的原因,出现了很多的日志文件系统,数据在缓冲区修改后,同时会被文件系统记录修改信息,这样即使此时系统掉电,系统重启后会首先从日志记录中恢复数据,保证数据不丢失。当然这些问题不再本文的叙述范围。

由于上述原因,在使用适当的关闭过程之前,绝对不要关掉电源,Sync命令倾空(Flushes)缓冲,也即,强迫所有未被写的数据写入磁盘,可用以确定所有的写操作都已完成。在传统的UNIX系统中,有一个叫做update的程序运行于后台,每隔30秒做一次sync操作,因此通常无需手工使用sync命令了。Linux另外有一个后台程序,Bdflush,这个程序执行更频繁的但不是全面的同步操作,以避免有时sync的大量磁盘I/O操作所带来的磁盘的突然冻结。

在Linux中,Bdflush是由update启动的。通常没有理由来担心此事,但如果由于某些原因bdflush进程死掉了,内核会对此作出警告,此时你就要手工地启动它了(/sbin/update)。

缓存(Cache)实际并不是缓冲文件的,而是缓冲块的,块是磁盘I/O操作的最小单元(在Linux中,它们通常是1KB)。这样,目录、超级块、其它文件系统的薄记数据以及非文件系统的磁盘数据都可以被缓冲了。缓冲的效力主要是由它的大小决定的。缓冲太小的话等于没用。它只能容纳一点数据,因此在被重用时,所有缓冲的数据都将被倾空。实际的大小依赖于数据读写的频次、相同数据被访问的频率。只有用实验的方法才能知道。
如果缓存有固定的大小,那么缓存太大了也不好,因为这会使得空闲的内存太小而导致进行交换操作(这同样是慢的)。为了最有效地使用实际内存,Linux自动地使用所有空闲的内存作为高速缓冲,当程序需要更多的内存时,它也会自动地减小缓冲的大小。

这就是一般情况下Linux内存的一般机制,真正的Linux内存的运行机制远远比这个复杂。
摘自:http://blog.csdn.net/tianlesoftware/article/details/5463790

varnish前端缓存测试

今天给lamp一键安装包增加了一个扩展-varnish,主要作为wordpress博客的缓存。下面我们来用ab工具做一个简单的并发为100,连接数为1000的压力测试,一个是没有启用varnish缓存的,一个是varnish前面缓存的。
服务器参数:系统centos 5 32位,单核,Intel(R) Xeon(R) CPU L5630 @ 2.13GHz,1G内存
没有经过varnish缓存的测试结果:
负载40.44
Concurrency Level: 100
Time taken for tests: 305.766 seconds
Complete requests: 1000
Failed requests: 1
(Connect: 0, Receive: 0, Length: 1, Exceptions: 0)
Write errors: 0
Non-2xx responses: 1
Total transferred: 19746015 bytes
HTML transferred: 19521638 bytes
Requests per second: 3.27 [#/sec] (mean)
Time per request: 30576.620 [ms] (mean)
Time per request: 305.766 [ms] (mean, across all concurrent requests)
Transfer rate: 63.07 [Kbytes/sec] received
开启了varnish前端缓存的
负载0.05

Concurrency Level: 100
Time taken for tests: 12.720 seconds
Complete requests: 1000
Failed requests: 0
Write errors: 0
Total transferred: 20086736 bytes
HTML transferred: 19821261 bytes
Requests per second: 78.62 [#/sec] (mean)
Time per request: 1271.991 [ms] (mean)
Time per request: 12.720 [ms] (mean, across all concurrent requests)
Transfer rate: 1542.15 [Kbytes/sec] received

这两组数据不用我说,你也应该明白了。

CentOS系统服务优化脚本

  1. #!/bin/bash
  2. #该脚本用于关闭服务器上非必须的系统服务项,并不适用于所有服务器,比如如果是文件服务器则NFS相关服务则不能关闭
  3. #定义所要停止的服务,可以根据实际服务器应用更改
  4. SERVICES="acpid atd auditd avahi-daemon bluetooth cups firstboot hidd ip6tables kudzu lvm2-monitor mcstrans mdmonitor microcode_ctl netfs nfslock pcscd portmap rpcgssd rpcidmapd xfs yum-updatesd"
  5. for service in $SERVICES
  6. do
  7. #关闭服务随系统启动
  8. chkconfig $service off
  9. #停止选择服务
  10. service $service stop
  11. done

下载脚本:http://devops.webres.wang/wp-content/uploads/2011/10/optimize-service.sh

关闭CENTOS不必要的默认服务

CentOS关闭服务的方法:

  1. chkconfig –level 2345 服务名称 off

 

服務名稱 建議 說明
acpid 停用 Advanced Configuration and Power Interface 電源進階設定,常用在 Laptop 上
apmd 停用 Adventage Power Management daemon 偵測系統的電池電量,常用在 Laptop 上
atd 停用 /etc/at.allow,/etc/at.deny 我大概都使用 crond 來達成
autofs 停用 自動掛載檔案系統與週邊裝置 (如光碟、USB),常用在 Laptop 上
avahi-daemon 停用 當區網沒有 DNS 服務時會試著尋找提供 zeroconf 協定的主機
bluetooth 停用 Bluetooth 藍芽,常用在 Laptop 上
cpuspeed 停用 控制 CPU 速度主要用來省電,常用在 Laptop 上
cups 停用 Common UNIX Printing System 使系統支援印表機
firstboot 停用 安裝完成後第一次啟動時的服務,設定 auth、firewall、keyboard…
gpm 停用 記錄週邊裝置的檔案資料,例如文字模式下可使用滑鼠
haldaemon 停用 使系統支援 plug and play 裝置
hidd 停用 使系統支援藍芽裝置,例如滑鼠,鍵盤
hplip 停用 使系統支援 HP 相關型號印表機
ip6tables 停用 使系統支援 IPTables Filrewall IPv6
isdn 停用 使系統支援 Integrated Services Digital Network (ISDN) 環境
lm_sensors 停用 使系統支援偵測主機版或硬體,常用在 Laptop 上
messagebus 停用 使系統支援 plug and play 裝置
nfslock 停用 使系統支援 NFS Server 資料一致性功能
pcscd 停用 使系統支援 Smart Card
portmap 停用 使系統支援 NFS Service
rpcgssd 停用 使系統支援 NFSv4 Service
rpcidmapd 停用 使系統支援 NFSv4 Service
yum-updatesd 停用 使系統支援 YUM 自動更新服務 (上線機器還是先確認好再更新)
 
anacron 視個人需求 執行在 crontab 設定的時間沒有執行到的工作
auditd 視個人需求 稽核系統 /var/log/audit/audit.log,若 auditd 未執行中則稽核訊息會寫入 /var/log/messages (配合 SELinux)
iptables 視個人需求 使系統支援 IPTables Filrewall
irqbalance 視個人需求 使系統支援多個 CPU 環境當系統中斷請求時進行負載平衡的程序,所以單 CPU 的機器就不需要
lvm2-monitor 視個人需求 使系統支援 Logical Volume Manager 邏輯磁區
mcstrans 視個人需求 主要用於配合 SELinux 服務
mdmonitor 視個人需求 使系統支援 RAID 相關程序
microcode_ctl 視個人需求 使系統支援 Intel IA32 CPU 特色,所以 AMD CPU 不需要
netfs 視個人需求 Network File System Mounter 網路掛載系統 (如 NFS、Samba、NCP)
restorecond 視個人需求 使系統支援 SELinux 監控檔案狀態
smartd 視個人需求 使系統支援檢查硬碟狀態 (Hardware RAID 要改設定檔)
sendmail 視個人需求 使系統支援 Sendmail
xfs 視個人需求 使系統支援 X Window 字型
 
crond 啟動 /etc/cron.* 排程服務
kudzu 啟動 使系統每次開機會都自動執行硬體偵測
network 啟動 使系統支援網卡
readahead_early 啟動 使系統再啟動時預先將相關檔案讀到記憶體內來加快啟動速度
sshd 啟動 使系統支援 SSH Service
syslog 啟動 使系統支援 System Log Service

 

CentOS5.5 默认基本服务详解

服务名称 功能 默认 建议 备注
NetworkManager 用于自动连接网络 关闭 关闭 对服务器没用
acpid 电源的开关等检测管理 开启 关闭 对服务器没用
anacron 一种计划任务管理 开启 开启  
apmd 高级电源管理 开启 开启  
atd 在指定时间执行命令 开启 关闭 如果用crond,则可关闭它
auditd   开启 自定 如果用selinux,需要开启它
autofs 文件系统自动加载、卸载 开启 自定 只在需要时开启它,可以停止
avahi-daemon 本地网络服务查找 开启 关闭 对服务器没用
avahi-dnsconfd avahi DNS 关闭 关闭 对服务器没用
bluetooth 蓝牙无线通信 开启 关闭 对服务器没用
conman 控制台管理 关闭 关闭 没用
spuspeed 调节cpu速度 开启 自定  
crond 计划任务管理 开启 开启 很有用,开启
cups 通用unix打印服务 开启 关闭 对服务器没用
dnsmasq dns cache 关闭 关闭 没用
dund 蓝牙相关 关闭 关闭  
firstboot 系统安装后初始设定 开启 关闭  
gpm 控制台下的鼠标支持 开启 开启  
haldaemon 硬件信息收集服务 开启 开启  
hidd 蓝牙相关 开启 关闭  
ibmasm ibm硬件管理 关闭 关闭  
ip6tables ipv6防火墙 开启 关闭  
iptables ipv4防火墙 开启 关闭  
irda 红外线通信 关闭 关闭  
irqbalance cpu负载均衡 开启 自定 多核cup需要
kudzu 硬件变动检测 开启 关闭 服务器无用
lvm2-monitor lvm监视 开启 关闭 非集群无用
mcstrans 在开启selinux时用于检查context 开启 关闭  
mdmonitor 软raid监视 开启 关闭  
mdmpd 软raid管理 关闭 关闭  
messagebus 负责在各个系统进程之间传递消息 开启 开启 如停用,haldaemon启动会失败
microcode_ctl  cpu微码管理升级 开启 关闭  
multipathd   关闭 关闭  
netconsole   关闭 关闭  
netfs nfs相关 开启 关闭  
netplugd 网线热插拔监视 关闭 关闭  
network   开启 开启  
nfs 网络文件系统 关闭 关闭  
nfslock nfs相关 开启 关闭  
nscd name cache,应该与DNS相关 关闭 关闭  
oddjobd 与D-BUS相关 关闭 关闭  
pand 蓝牙相关 关闭 关闭  
pcscd pc/sc smart card daemon 开启 关闭  
portmap 使用NFS、NIS时的port map 开启 关闭  
psacct 负荷检测 关闭 关闭  
rawdevices raw 设备支持 开启 开启  
rdisc 自动检测路由器 关闭 关闭  
readahead_early   开启 开启  
readahead_later   关闭 关闭  
restorecond selinux相关 关闭 关闭  
rpcgssd NFS相关 开启 关闭  
rpcidmapd RPC name to UID/GID mapper 开启 关闭 NFS相关
rpcsvcgssd NFS相关 关闭 关闭  
saslauthd sasl认证服务相关 关闭 关闭  
sendmail   开启 关闭  
smartd 硬盘自动检测守护进程 开启 开启  
sshd   开启 开启  
syslog 系统日志进程 开启 开启  
tcsd   关闭 关闭  
wpa_supplicant 无线认证相关 关闭 关闭  
xfs x windows相关 开启 关闭  
ypbind network information service客户端 关闭 关闭  
yum-updatesd yum自动升级 开启 关闭 对服务器开启比较危险哦

注:上述服务列表是在CentOS只安装了基本系统、开发工具、开发库、老软件支持的前提下显示出来的。 

Linux安装配置varnish web加速器

Varnish是一款高性能的开源HTTP加速器,它可以来做纯粹的代理服务器,负载均衡,但varnish最主要的功能是缓存加速,也是它最出色的地方。下面介绍如何安装和使用。

  1. wget -c http://repo.varnish-cache.org/source/varnish-3.0.1.tar.gz
  2. tar xzvf varnish-3.0.1.tar.gz
  3. cd varnish-3.0.1
  4. ./configure –prefix=/usr/local/varnish
  5. make
  6. make install
  7. groupadd varnish
  8. useradd -d /var/lib/varnish -g varnish -s /sbin/nologin varnish
  9. ln -s /usr/local/varnish/sbin/varnishd /usr/sbin/varnishd

启动varnish:

  1. varnishd -f /usr/local/varnish/etc/varnish/default.vcl -s malloc,1G -g varnish -u varnish -T 127.0.0.1:2000

关闭varnish:

  1. pkill varnish

启动参数介绍:
-f /usr/local/etc/varnish/default.vcl
这个 –f 选项指定varnishd使用哪个配置文件。
-s malloc,1G
这个 –s 选项用来确定varnish使用的存储类型和存储容量,我使用的是malloc类型(malloc是一个C函数,用于分配内存空间), 1G 定义多少内存被malloced,1G = 1gigabyte。
-T 127.0.0.1:2000
Varnish有一个基于文本的管理接口,启动它的话可以在不停止varnish的情况下来管理varnish。您可以指定管理软件监听哪个接口。当然您不能让全世界的人都能访问您的varnish管理接口,因为他们可以很轻松的通过访问varnish管理接口来获得您的root访问权限。我推荐只让它监听本机端口。如果您的系统里有您不完全信任的用户,您可以通过防火墙规则来限制他访问varnish的管理端口。
-a 0.0.0.0:8080
这一句的意思是制定varnish监听所有IP发给8080端口的http请求,如果在生产环境下,您应该让varnish监听80,这也是默认的。
vcl配置文件的介绍请执行如何命令查看:
man /usr/local/varnish/share/man/man7/vcl.7
也可以查看在线文档:https://www.varnish-cache.org/docs/3.0/