freebsd vmstat结果内容的解释

top是给Linux设计的。在FreeBSD VM里面的Free概念和其他OS完全不同,使用top查看Free内存对于FreeBSD来说可以说没什么意义。正确的方法是看vmstat。 作者:南非蜘蛛 procs memory page disk faults cpu r b w swap free re mf mi po fr de sr f0 s0 s1 s2 in sy cs us sy id 0 0 0 14888 19120 0 4 2 11 10 0 0 0 0 0 8 198 2158 98 11 19 69 SWAP的单位应该是K,不是M。还有两个比较重要的参数是PI、PO,表示内存的调入、调出页面,单位也是K,但是多大值作为一个衡量标准,我也不清楚,不知道是否有经验值。 还有,最好使用vmstat t [n]命令,例如 vmstat 5 5,表示在T(5)秒时间内进行N(5)次采样。如果只使用vmstat,无法反映真正的系统情况,试一下,看看结果就知道了。 procs: r–>在运行队列中等待的进程数 b–>在等待io的进程数 w–>可以进入运行队列但被替换的进程 memoy swap–>现时可用的交换内存(k表示) free–>空闲的内存(k表示) pages re--》回收的页面 mf--》非严重错误的页面 pi--》进入页面数(k表示) po--》出页面数(k表示) fr--》空余的页面数(k表示) de--》提前读入的页面中的未命中数 sr--》通过时钟算法扫描的页面...

2009-03-29 · 1 分钟 · admin

Mysql安装&同步

装mysql压缩文件格式的MySQL二进制分发版 一. 安装的软件: 1. Red Hat Enterprise Linux 4.0 update5 mysql-5.0.45-linux-i686-icc-glibc23.tar.gz 二、装步骤如下: 首先检查是否安装了Red Hat Enterprise Linux 4.0中自带的mysql服务,检查系统是否安装了mysql软件包,在终端执行如下命令: Shell> rpm –aq | grep mysql –ri 显示如下: mysql-4.1.12-3.RHEL4.1 Mod_auth_mysql-2.6.1-2.2 等软件包 在安装mysql二进制分发版之前请先卸载mysql rpm软件包 Shell> rpm -e mysql-4.1.12-3.RHEL4.1 将相关的rpm包逐一掉。 shell> groupadd mysql shell> useradd -g mysql mysql 为mysql增加一个登录用户和组 shell> cd /usr/local shell> tar –zxvf mysql-5.0.45-linux-i686-icc-glibc23.tar.gz shell> ln -s mysql-5.0.45-linux-i686-icc-glibc23 mysql shell> cd mysql shell> scripts/mysql_install_db –user=mysql /如果你用root运行命令,应当使用–user选项。选项的值应与你在第一步为运行服务器所创建的登录账户相同。如果你用该用户登录来运行命令,可以省略–user选项。/ shell> chown -R root . shell> chown -R mysql data...

2009-03-28 · 3 分钟 · admin

my.cnf 注释

从 hi!admin 抄来的一份配置.注释得非常好.精 #BEGIN CONFIG INFO #DESCR: 4GB RAM, 只使用InnoDB, ACID, 少量的连接, 队列负载大 #TYPE: SYSTEM #END CONFIG INFO 此mysql配置文件例子针对4G内存 主要使用INNODB #处理复杂队列并且连接数量较少的mysql服务器 将此文件复制到/etc/my.cnf 作为全局设置, mysql-data-dir/my.cnf 作为服务器指定设置 (@localstatedir@ for this installation) 或者放入 ~/.my.cnf 作为用户设置. 在此配置文件中, 你可以使用所有程序支持的长选项. 如果想获悉程序支持的所有选项 请在程序后加上"–help"参数运行程序. 关于独立选项更多的细节信息可以在手册内找到 以下选项会被MySQL客户端应用读取. 注意只有MySQL附带的客户端应用程序保证可以读取这段内容. 如果你想你自己的MySQL应用程序获取这些值 需要在MySQL客户端库初始化的时候指定这些选项 [client] #password = [your_password] port = @MYSQL_TCP_PORT@ socket = @MYSQL_UNIX_ADDR@ *** 应用定制选项 *** MySQL 服务端 [mysqld] 一般配置选项 port = @MYSQL_TCP_PORT@ socket = @MYSQL_UNIX_ADDR@ back_log 是操作系统在监听队列中所能保持的连接数, 队列保存了在MySQL连接管理器线程处理之前的连接. 如果你有非常高的连接率并且出现"connection refused" 报错, 你就应该增加此处的值....

2009-03-28 · 4 分钟 · admin

InnoDB行锁特点

InnoDB行锁是通过给索引上的索引项加锁来实现的,这一点MySQL与ORACLE不同,后者是通过在数据块中对相应数据行加锁来实现的。InnoDB这种行锁实现特点意味着:只有通过索引条件检索数据,InnoDB才使用行级锁,否则,InnoDB将使用表锁! 在实际应用中,要特别注意InnoDB行锁的这一特性,不然的话,可能导致大量的锁冲突,从而影响并发性能。下面我们通过一些实际例子,来加以说明。 (1)在不通过索引条件查询的时候,InnoDB确实使用的是表锁,而不是行锁。 下面的例子中,开始tab_no_index表没有索引: mysql> create table tab_no_index(id int,name varchar(10)) engine=innodb; Query OK, 0 rows affected (0.15 sec) mysql> insert into tab_no_index values(1,'1'),(2,'2'),(3,'3'),(4,'4'); Query OK, 4 rows affected (0.00 sec) Records: 4 Duplicates: 0 Warnings: 0 InnoDB存储引擎的表在不使用索引时使用表锁例子 session_1 session_2 mysql> set autocommit=0; Query OK, 0 rows affected (0.00 sec) mysql> select * from tab_no_index where id = 1 ; +------+------+ | id | name | +------+------+ | 1 | 1 | +------+------+ 1 row in set (0....

2009-03-28 · 2 分钟 · admin

InnoDB和MyISAM的差别

InnoDB和MyISAM是在使用MySQL最常用的两个表类型,各有优缺点,视具体应用而定。基本的差别为:MyISAM类型不支持事务处理等 高级处理,而InnoDB类型支持。MyISAM类型的表强调的是性能,其执行数度比InnoDB类型更快,但是不提供事务支持,而InnoDB提供事务 支持已经外部键等高级数据库功能。 MyIASM是IASM表的新版本,有如下扩展: 二进制层次的可移植性。 NULL列索引。 对变长行比ISAM表有更少的碎片。 支持大文件。 更好的索引压缩。 更好的键吗统计分布。 更好和更快的auto_increment处理。 每个MyISAM表最大索引数是64。 这可以通过重新编译来改变。每个索引最大的列数是16个。 以下是一些细节和具体实现的差别: 1.InnoDB不支持FULLTEXT类型的索引。 2.InnoDB 中不保存表的具体行数,也就是说,执行select count() from table时,InnoDB要扫描一遍整个表来计算有多少行,但是MyISAM只要简单的读出保存好的行数即可。注意的是,当count()语句包含 where条件时,两种表的操作是一样的。 3.对于AUTO_INCREMENT类型的字段,InnoDB中必须包含只有该字段的索引,但是在MyISAM表中,可以和其他字段一起建立联合索引。 4.DELETE FROM table时,InnoDB不会重新建立表,而是一行一行的删除。 5.LOAD TABLE FROM MASTER操作对InnoDB是不起作用的,解决方法是首先把InnoDB表改成MyISAM表,导入数据后再改成InnoDB表,但是对于使用的额外的InnoDB特性(例如外键)的表不适用。 另外,InnoDB表的行锁也不是绝对的,如果在执行一个SQL语句时MySQL不能确定要扫描的范围,InnoDB表同样会锁全表,例如update table set num=1 where name like “%aaa%” 任何一种表都不是万能的,只用恰当的针对业务类型来选择合适的表类型,才能最大的发挥MySQL的性能优势。 http://dev.mysql.com/doc/refman/5.1/zh/storage-engines.html

2009-03-28 · 1 分钟 · admin

MySQL 語法 詳細執行時間 與 CPU/記憶體使用

查看 MySQL 語法 詳細執行時間 與 CPU/記憶體使用量: MySQL Query Profiler MySQL 的 SQL 語法調整主要都是使用 EXPLAIN, 但是這個並沒辦法知道詳細的 Ram(Memory)/CPU 等使用量. 於 MySQL 5.0.37 以上開始支援 MySQL Query Profiler, 可以查詢到此 SQL 會執行多少時間, 並看出 CPU/Memory 使用量, 執行過程中 System lock, Table lock 花多少時間等等. MySQL Query Profile 詳細介紹可見: Using the New MySQL Query Profiler (2007.04.05 發表) 效能分析主要分下述三種(轉載自上篇): Bottleneck analysis - focuses on answering the questions: What is my database server waiting on; what is a user connection waiting on; what is a piece of SQL code waiting on?...

2009-03-28 · 4 分钟 · admin

Nginx + PHP mysql_pconnect = Database errors (Too many connections)

If you’re using NGinx spawn-cgi or FPM with PHP and calling mysql_pconnect, you are likely going to experience frequent database crashes and “Too many connections” errors. This took a while to trace, but once you understand the issue, it all makes sense. mysql_pconnect opens a “persistent” connection to the database. From the documentation: “the connection to the SQL server will not be closed when the execution of the script ends. Instead, the link will remain open for future use (mysql_close() will not close links established by mysql_pconnect())....

2009-03-28 · 2 分钟 · admin

Installing MySQL 5.1 on FreeBSD

This step by step tutorial is everything you need to install MySQL 5.1 (from source) on a virgin FreeBSD 4.x - 7.x machine. Step 1: Install wget cd /usr/ports/ftp/wget make make install Step 2: Download MySQL 5.1 source code mkdir /usr/tmp cd /usr/tmp wget "http://dev.mysql.com/get/Downloads/MySQL-5.1/mysql-5.1.24-rc.tar.gz/from/http://mysql.he.net/" tar xvzf mysql-5.1.24-rc.tar.gz Step 3: Create mysql user adduser Follow the prompts to create a mysql user and mysql group with a default directory of /usr/local/mysql...

2009-03-28 · 3 分钟 · admin

tar zxfk filename.tar.gz -k,--keep-old-files 不覆盖已存在文件

版权声明:可以任意转载,转载时请务必以超链接形式标明文章原始出处和作者信息及本声明。 http://windtear.net/archives/2005/09/22/000777.html 倒数据当然推荐rsync 不过当文件数超级多 或者网络条件等不具备时 tar 打包就是首选了 数据运到目的地后 解包时需要注意别覆盖 tar 工具的 -k 参数就提供干这事 -k,–keep-old-files 不覆盖已存在文件 -k, --keep-old-files keep existing files; don't overwrite them from archive 如: tar zxfk filename.tar.gz

2009-03-26 · 1 分钟 · admin

tar命令详解 (推荐)

tar [-cxtzjvfpPN] 文件与目录 … 参数: -c :建立一个压缩文件的参数指令(create 的意思); -x :解开一个压缩文件的参数指令! -t :查看 tarfile 里面的文件! 特别注意,在参数的下达中, c/x/t 仅能存在一个!不可同时存在!因为不可能同时压缩与解压缩。 -z :是否同时具有 gzip 的属性?亦即是否需要用 gzip 压缩? -j :是否同时具有 bzip2 的属性?亦即是否需要用 bzip2 压缩? -v :压缩的过程中显示文件!这个常用,但不建议用在背景执行过程! -f :使用档名,请留意,在 f 之后要立即接档名喔!不要再加参数! 例如使用『 tar -zcvfP tfile sfile』就是错误的写法,要写成『 tar -zcvPf tfile sfile』才对喔! -p :使用原文件的原来属性(属性不会依据使用者而变) -P :可以使用绝对路径来压缩! -N :比后面接的日期(yyyy/mm/dd)还要新的才会被打包进新建的文件中! –exclude FILE:在压缩的过程中,不要将 FILE 打包! 范例: 范例一:将整个 /etc 目录下的文件全部打包成为 /tmp/etc.tar [root@linux ~]# tar -cvf /tmp/etc.tar /etc <==仅打包,不压缩! [root@linux ~]# tar -zcvf /tmp/etc....

2009-03-26 · 2 分钟 · admin

cp 命令

cp [-R [-H | -L | -P]] [-f | -i | -n] [-alpv] source_file target_file cp [-R [-H | -L | -P]] [-f | -i | -n] [-alpv] source_file … target_directory -i 覆盖确认 -n 覆盖不确认 -v 显示详情 -R 全部目录 -p 权限和source_file 一样 其它的暂时没用到,先写到这里

2009-03-26 · 1 分钟 · admin

FreeBSD常见问题集合

1.如何使用脚本获得PID 参见脚本pid.sh, 如下: $ cat pid.sh #!/bin/sh pid=`ps -aux | grep $1 | grep -v grep | awk '{print $2}'` echo $pid < $1.pid $./pid.sh sshd 将文件名从大写转换为小写 参见脚本mklower.sh, 如下: #!/bin/sh for file in $1; do newfile=`echo "$file" | tr "[:upper:]" "[:lower:]"` mv "$file" "$newfile" done $ mklower.sh *.JPG 子目录按大小排序 $du -s * | sort -n ls显示颜色 $ls -G #显示属性颜色 $ls -F #显示属性字符 $ls -FG 快速安装package 你可以先设定 PACKAGEROOT,指定用该站点的package,安装时自动寻找对应pakage,而且你不需要知道版本,只要知道package名称即可,会自动安装package的最新版,中文的部分只要加上 zh-,像是 zh-xcin。 # setenv PACKAGEROOT ftp://ftp....

2009-03-25 · 1 分钟 · admin

如何将FreeBSD复制到另一颗硬盘 ?

如何将Linux或FreeBSD复制到另一颗硬盘 ? Linux上的系统复制很简单,使用cp -ax将partition资料复制过去,重开机後设定lilo就可以了。 FreeBSD也可以用cp来复制文档,但是对于复制整个文档系统并不是好方法。 这里介绍使用dump和restore来做: 创建新的文档系统 假如你的新硬盘为ad1, 而将来的根分区将是ad1s1a, 你可以先创建文档系统: newfs /dev/ad1s1a mount /dev/ad1s1a /mnt cd /mnt 复制: dump -f- / | restore -f- -r 这是把老的根文档系统复制输出到管道,restore从管道里读数据,写入当前目录所在的文档系统。 按部就班复制其他文档系统 复制完後,也许 要修改新硬盘下的/etc/fstab,安装上新的分区,摘下老硬盘就可以了。 再补充一点,如果你要复制的是另外一台机器,可以用rsh,这样就可以通过网络把一个分区数据传送到另外一台机器,不需要NFS,不需SAMBA等就可以解决问题,而cp就很难作到了。 newfs /dev/ad1s1a mount /dev/ad1s1a /mnt cd /mnt rsh -l yourname thathost ‘dump -f- /’ | restore -f- -r http://www.cnblogs.com/znuwcj/archive/2006/08/22/483583.aspx

2009-03-25 · 1 分钟 · admin

fsck命令详解

功能说明:检查文件系统并尝试修复错误。 语 法:fsck [-aANPrRsTV][-t <文件系统类型>][文件系统…] 补充说明:当文件系统发生错误四化,可用fsck指令尝试加以修复。 参 数: -a 自动修复文件系统,不询问任何问题。 -A 依照/etc/fstab配置文件的内容,检查文件内所列的全部文件系统。 -N 不执行指令,仅列出实际执行会进行的动作。 -P 当搭配”-A”参数使用时,则会同时检查所有的文件系统。 -r 采用互动模式,在执行修复时询问问题,让用户得以确认并决定处理方式。 -R 当搭配”-A”参数使用时,则会略过/目录的文件系统不予检查。 -s 依序执行检查作业,而非同时执行。 -t<文件系统类型> 指定要检查的文件系统类型。 -T 执行fsck指令时,不显示标题信息。 -V 显示指令执行过程。 例子 : 检查 msdos 档案系统的 /dev/hda5 是否正常,如果有异常便自动修复 : fsck -t msdos -a /dev/hda5 注意 : 此指令可与 /etc/fstab 相互参考操作来加以了解。 运行fsck命令后产生的文件有什么用? 当执行fsck命令时,fsck命令如果发现存在孤立的文件或目录,这些孤立的文件或目录对于系统管理员或用户来说,无法访问到它,因为它与它的上级 目录失去了关联,如果用户允许fsck重新把它们找回来的话,fsck命令就会把这些孤立的文件或目录放在文件系统的/lost+found目录下,并用 各自的i-node号来命名,以便用户查找自己需要的文件。Lost+found目录通过它的英文含义我们都可以知道,它是一个失物认领处。 因此当某个用户发现自己丢失了某个文件,可以在执行fsck之后到/lost+found目录下去查找,这时通过文件名已无法辨认出文件的作用,只能 用file之类的命令来确定文件的类型,如果是数据文件,可以用more或vi命令来查看,如果是二进制文件,可以用dbx命令来调试或者试着执行它(注 意它可能是一个具有破坏性的程序),知道文件或目录的作用之后,可以对其进行改名。 如果用户不允许fsck把这些孤立的文件或目录找回来,那么fsck命令就会破坏这些文件或目录,彻底丢失这些文件或目录,用户或系统管理员永远也无法找回它们。 原文 http://hi.baidu.com/blvm/blog/item/7b7c95c46b61a6ad8226acf4.html

2009-03-25 · 1 分钟 · admin

mysql explain详解

在做sql查询的时候,应该想到explain,这样用来对sql的执行效率进行分析。 mysql explain的详解 explain显示了mysql如何使用索引来处理select语句以及连接表。可以帮助选择更好的索引和写出更优化的查询语句。 使用方法,在select语句前加上explain就可以了: 如:explain select surname,first_name form a,b where a.id=b.id 分析结果形式如下: table type possible_keys key key_len ref rows extra a range id first_name First_name 9 NULL 23112 Using where Using temporary Using filesort b ref id first_name id 4 id 2 Using where EXPLAIN列的解释: table:显示这一行的数据是关于哪张表的 type:这是重要的列,显示连接使用了何种类型。从最好到最差的连接类型为const、eq_reg、ref、range、indexhe和ALL possible_keys:显示可能应用在这张表中的索引。如果为空,没有可能的索引。可以为相关的域从WHERE语句中选择一个合适的语句 key:实际使用的索引。如果为NULL,则没有使用索引。很少的情况下,MYSQL会选择优化不足的索引。这种情况下,可以在SELECT语句中使用 USE INDEX(indexname)来强制使用一个索引或者用IGNORE INDEX(indexname)来强制MYSQL忽略索引 key_len:使用的索引的长度。在不损失精确性的情况下,长度越短越好 ref:显示索引的哪一列被使用了,如果可能的话,是一个常数 rows:MYSQL认为必须检查的用来返回请求数据的行数 Extra:关于MYSQL如何解析查询的额外信息。将在表4.3中讨论,但这里可以看到的坏的例子是Using temporary和Using filesort,意思MYSQL根本不能使用索引,结果是检索会很慢 extra列返回的描述的意义 Distinct:一旦MYSQL找到了与行相联合匹配的行,就不再搜索了 Not exists: MYSQL优化了LEFT JOIN,一旦它找到了匹配LEFT JOIN标准的行,就不再搜索了 Range checked for each Record(index map:#):没有找到理想的索引,因此对于从前面表中来的每一个行组合,MYSQL检查使用哪个索引,并用它来从表中返回行。这是使用索引的最慢的连接之一 Using filesort: 看到这个的时候,查询就需要优化了。MYSQL需要进行额外的步骤来发现如何对返回的行排序。它根据连接类型以及存储排序键值和匹配条件的全部行的行指针来排序全部行 Using index: 列数据是从仅仅使用了索引中的信息而没有读取实际的行动的表返回的,这发生在对表的全部的请求列都是同一个索引的部分的时候 Using temporary 看到这个的时候,查询需要优化了。这里,MYSQL需要创建一个临时表来存储结果,这通常发生在对不同的列集进行ORDER BY上,而不是GROUP BY上 Where used 使用了WHERE从句来限制哪些行将与下一张表匹配或者是返回给用户。如果不想返回表中的全部行,并且连接类型ALL或index,这就会发生,或者是查询有问题不同连接类型的解释(按照效率高低的顺序排序) system 表只有一行:system表。这是const连接类型的特殊情况 const:表中的一个记录的最大值能够匹配这个查询(索引可以是主键或惟一索引)。因为只有一行,这个值实际就是常数,因为MYSQL先读这个值然后把它当做常数来对待 eq_ref:在连接中,MYSQL在查询时,从前面的表中,对每一个记录的联合都从表中读取一个记录,它在查询使用了索引为主键或惟一键的全部时使用 ref:这个连接类型只有在查询使用了不是惟一或主键的键或者是这些类型的部分(比如,利用最左边前缀)时发生。对于之前的表的每一个行联合,全部记录都将从表中读出。这个类型严重依赖于根据索引匹配的记录多少—越少越好 range:这个连接类型使用索引返回一个范围中的行,比如使用>或<查找东西时发生的情况 index: 这个连接类型对前面的表中的每一个记录联合进行完全扫描(比ALL更好,因为索引一般小于表数据) ALL:这个连接类型对于前面的每一个记录联合进行完全扫描,这一般比较糟糕,应该尽量避免

2009-03-25 · 1 分钟 · admin