July 7, 2010
vmstat查看FreeBSD服务器的内存使用情况
"\u003cp\u003e在FreeBSD里运行vmstat命令执行结果如下:\u003c/p\u003e\n\u003cblockquote\u003e\n\u003cp\u003e# vmstat\nprocs memory page disk faults cpu\nr b w avm fre flt re pi po fr sr ad0 in sy cs us sy id\n0 2 1 270512 20316 30 0 0 0 26 5 1223 1589 98 593 1 1 99\u003c/p\u003e\u003c/blockquote\u003e\n\u003cp\u003e当然,仅执行一次vmstat命令是无法反映真正的系统情况的。最好使用vmstat t [n]命令,例如 vmstat 5 5,表示在T(5)秒时间内进行N(5)次采样,或者干脆vmstat 1让系统每秒钟执行一次。\u003c/p\u003e\n\u003cp\u003e下面是对各个参数的详细解释\u003c/p\u003e\n\u003cp\u003eprocs:\nr–\u0026gt;在运行的进程数\nb–\u0026gt;在等待io的进程数(等待i/o,paging等等)\nw–\u0026gt;可以进入运行队列但被替换的进程\nmemoy(以k为单位,包括虚拟内存和真实内存,正在运行或最近20秒在运行的进程所用的虚拟内存将被视为active)\navm–\u0026gt;活动的虚拟内存\nfree–\u0026gt;空闲的内存\u003c/p\u003e\n\u003cp\u003epages(统计错误页和活动页,每5秒平均一下,以秒为单位给 …\u003c/p\u003e"
July 7, 2010
linux中查看系统资源占用情况的命令
"\u003cp\u003e\u003cstrong\u003etop:\u003c/strong\u003e\n主要参数\nd:指定更新的间隔,以秒计算。\nq:没有任何延迟的更新。如果使用者有超级用户,则top命令将会以最高的优先序执行。\nc:显示进程完整的路径与名称。\nS:累积模式,会将己完成或消失的子行程的CPU时间累积起来。\ns:安全模式。\ni:不显示任何闲置(Idle)或无用(Zombie)的行程。\nn:显示更新的次数,完成后将会退出to\n显示参数:\nPID(Process ID):进程标示号。\nUSER:进程所有者的用户名。\nPR:进程的优先级别。\nNI:进程的优先级别数值。\nVIRT:进程占用的虚拟内存值。\nRES:进程占用的物理内存值。\nSHR:进程使用的共享内存值。\u003c/p\u003e\n\u003cp\u003eS:进程的状态,其中S表示休眠,R表示正在运行,Z表示僵死状态,N表示该进程优先值是负数。\n%CPU:该进程占用的CPU使用率。\n%MEM:该进程占用的物理内存和总内存的百分比。\nTIME+:该进程启动后占用的总的CPU时间。\nCommand:进程启动的启动命令名称,如果这一行显示不下,进程会有一个完整的命令行。\ntop命令使用过程中,还可以使用一些交互的命令来完成其它参数的功能。这些命令是通过快捷键启动的。 …\u003c/p\u003e"
July 7, 2010
freebsd下启动、停止 MySQL命令
"\u003cp\u003e\u003cstrong\u003e启动、停止 MySQL\u003c/strong\u003e\u003c/p\u003e\n\u003cp\u003e要启动 MySQL 的方法:(以本文将 MySQL 安装在 /usr/local/mysql 为例)\u003c/p\u003e\n\u003cblockquote\u003e\n\u003cp\u003e# /usr/local/mysql/share/mysql.server start\u003c/p\u003e\u003c/blockquote\u003e\n\u003cp\u003e如果安装目录使用的是默认的话,请使用\u003c/p\u003e\n\u003cblockquote\u003e\n\u003cp\u003e /usr/local/etc/rc.d/mysql-server start|stop|restart\u003c/p\u003e\u003c/blockquote\u003e\n\u003cp\u003e注意在第一次执行前,须将 mysql.server 设成可执行(chmod 744 mysql.server),另外可将这行指令加在 /etc/rc.d/rc.local 档中,让 MySQL 在开机时自动启动。\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003e要停止 MySQL 的方法:\u003c/strong\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003cp\u003e# /usr/local/mysql/bin/mysqladmin shutdown\u003c/p\u003e\u003c/blockquote\u003e\n\u003cp\u003e如果你为 MySQL Administrator root 帐号(非作业系统的 root)设了密码,要停止 MySQL 则必须像下列这样做,MySQL 会询问你 root 的密码後才会执行 shutdown 的工作:\u003c/p\u003e\n\u003cblockquote\u003e\n\u003cp\u003e# /usr/local/mysql/bin/mysqladmin -u root …\u003c/p\u003e\u003c/blockquote\u003e"
July 6, 2010
提高AJAX客户端响应速度
"\u003cp\u003eAJAX的出现极大的改变了Web应用客户端的操作模 式,它使的用户可以在全心工作时不必频繁的忍受那令人厌恶的页面刷新。理论上AJAX技术在很大的程度上可以减少用户操作的等待时间,同时节约网络上的数 据流量。而然,实际情况却并不总是这样。用户时常会抱怨用了AJAX的系统响应速度反而降低了。\n笔者从事AJAX方面的研发多年,参与开发了目前 国内较为成熟的AJAX平台-dorado。根据笔者的经验,导致这种结果的根本原因并不在AJAX。很多时候系统响应速度的降低都是由不够合理的界面设 计和不够高效的编程习惯造成的。下面我们就来分析几个AJAX开发过程中需要时刻注意的环节。\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003e合理的使用客户端编程和远程过程调用。\u003c/strong\u003e\n客户端的编程主要都是基于JavaScript的。而JavaScript是一种解释型 的编程语言,它的运行效率相对于Java等都要稍逊一筹。同时JavaScript又是运行在浏览器这样一个严格受限的环境当中。因此开发人员对于哪些逻 辑可以在客户端执行应该有一个清醒的认识。\n在实际的应用中究竟应该怎样使用客户端编程,这依赖于开发人员的经验判断。这里很多问题是只可意会的。 由于篇幅有限,在这 …\u003c/p\u003e"
July 6, 2010
FreeBSD查看即时网络流量
"\u003cp\u003e1、数据包 “netstat 1″一秒钟累计一次,”netstat 2″两秒钟累计一次。依此类推\u003c/p\u003e\n\u003cp\u003e2、查看网 卡流量:”systat -if 1″每秒钟刷新一次,”systat -if 2″两秒钟刷新一次,依此类推\u003c/p\u003e"
July 6, 2010
MySQL压力测试工具 mysqlslap 使用简介
"\u003cp\u003eMySQL从5.1.4版开始带有一个压力测试工具 \u003cstrong\u003emysqlslap\u003c/strong\u003e,通过模拟多个并发客户端访问 mysql来执行测试,使用起来非常的简单。通过mysqlslap –help可以获得可用的选项,这里列一些主要的参数,更详细的说明参考 \u003ca href=\"http://dev.mysql.com/doc/refman/5.1/en/mysqlslap.html\"\u003e官方手册\u003c/a\u003e。\u003c/p\u003e\n\u003cblockquote\u003e\n\u003cp\u003e–auto-generate-sql, -a\u003c/p\u003e\n\u003cp\u003e自动生成测试表和数据\u003c/p\u003e\n\u003cp\u003e–auto-generate-sql-load-type=type\u003c/p\u003e\n\u003cp\u003e测试语句的类型。取值包括:read,key,write,update和mixed(默认)。\u003c/p\u003e\n\u003cp\u003e–number-char-cols=N, -x N\u003c/p\u003e\n\u003cp\u003e自动生成的测试表中包含多少个字符类型的列,默认1\u003c/p\u003e\n\u003cp\u003e–number-int-cols=N, -y N\u003c/p\u003e\n\u003cp\u003e自动生成的测试表中包含多少个数字类型的列,默认1\u003c/p\u003e\n\u003cp\u003e–number-of-queries=N\u003c/p\u003e\n\u003cp\u003e总的测试查询次数(并发客户数×每客户查询次数)\u003c/p\u003e\n\u003cp\u003e–query=name,-q\u003c/p\u003e\n\u003cp\u003e使用自定义脚本执行测试,例如可以调用自定义的一个存储过程或者sql语句来执行测试。\u003c/p\u003e\n\u003cp\u003e–create-schema\u003c/p\u003e\n\u003cp\u003e测试的schema,MySQL中schema也就是database\u003c/p\u003e\n\u003cp\u003e–commint=N …\u003c/p\u003e\u003c/blockquote\u003e"
July 5, 2010
linux scp 命令
"\u003cp\u003e在 linux 之间复制 文件\u003c/p\u003e\n\u003cp\u003e安装方法:\u003c/p\u003e\n\u003cblockquote\u003e\n\u003cp\u003eyum -y install openssh-clients\u003c/p\u003e\u003c/blockquote\u003e\n\u003cp\u003elinux 的 scp 命令 可以 在 linux 之间复制 文件 和 目录;\u003c/p\u003e\n\u003ch1 id=\"scp-命令\"\u003e==================\n\u003cstrong\u003escp 命令\u003c/strong\u003e\u003c/h1\u003e\n\u003cp\u003escp 可以在 2个 linux 主机间复制文件;\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003e命令基本格式:\u003c/strong\u003e\nscp [可选参数] file_source file_target\u003c/p\u003e\n\u003ch1 id=\"从-本地-复制到-远程\"\u003e======\n从 本地 复制到 远程\u003c/h1\u003e\n\u003cul\u003e\n\u003cli\u003e复制文件:\u003c/li\u003e\n\u003cli\u003e命令格式:\nscp local_file remote_username@remote_ip:remote_folder\n或者\nscp local_file remote_username@remote_ip:remote_file\n或者\nscp local_file remote_ip:remote_folder\n或者\nscp local_file remote_ip:remote_file\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e第1,2个指定了用户名,命令执行后需要再输入密码,第1个仅指定了远程的目录,文件名字不变,第2个指定了文件名;\n第3,4个没有指定用户名,命令执行后需要输入用户名和密码, …\u003c/p\u003e"
July 3, 2010
FreeBSD 修改默认SHELL
"\u003cp\u003eFreeBSD下默认的shell为CSH,可以通过命令 echo $SHELL来查看系统默认的shell是哪一个的。\u003c/p\u003e\n\u003cp\u003e显示自己所使用的SHEEL命令:\nps或echo $SHELL\n修改默认SHELL为csh\nname:是指你登陆的名称\u003c/p\u003e\n\u003cblockquote\u003e\n\u003cp\u003epw usermod -n name -s csh\u003c/p\u003e\u003c/blockquote\u003e\n\u003cp\u003e查看所有支持的shell\u003c/p\u003e\n\u003cblockquote\u003e\n\u003cp\u003efreebsd# cat /etc/shells\n/bin/sh\n/bin/csh\n/bin/tcsh\u003c/p\u003e\u003c/blockquote\u003e\n\u003cp\u003e到于bash的安装请参考:\u003c/p\u003e"
July 2, 2010
mysql中的max_connect_errors
"\u003cp\u003e连接mysql server出来这个信息\u003c/p\u003e\n\u003cp\u003e引用\u003c/p\u003e\n\u003cblockquote\u003e\n\u003c/blockquote\u003e\n\u003cblockquote\u003e\n\u003cp\u003emessage from server: “Host ‘HP-2B6E9EC1747B’ is blocked because of many connection errors; unblock with ‘mysqladmin flush-hosts\u0026rsquo;”\u003c/p\u003e\u003c/blockquote\u003e\n\u003cp\u003e连接次数失败过多,并超过max_connect_erros的值后,服务器会直接拒绝来源机器的所有连接,只要把mysql server默认 max_connect_errors = 10\n把这个值设置大点就好了,记得一定要执行mysqladmin flush-hosts命令来解锁,原来的主机才可以恢复正常连接的.\u003c/p\u003e"
July 2, 2010
MySQL之Handler_read_*
"\u003cp\u003e在MySQL里,我们一般使用 \u003ca href=\"http://dev.mysql.com/doc/refman/5.0/en/show-status.html\"\u003eSHOW STATUS\u003c/a\u003e 查询服务器状态,语法一般来说如下:\u003c/p\u003e\n\u003cp\u003eSHOW [GLOBAL | SESSION] STATUS [LIKE ‘pattern’ | WHERE expr]\u003c/p\u003e\n\u003cp\u003e执行命令后会看到很多内容,其中有一部分是Handler_read_*,它们显示了数据库处理SELECT查询语句的状态,对于调试SQL语句有很大意 义,可惜实际很多人并不理解它们的实际意义,本文简单介绍一下:\u003c/p\u003e\n\u003cp\u003e为了让介绍更易懂,先建立一个测试用的表:\u003c/p\u003e\n\u003cp\u003eCREATE TABLE IF NOT EXISTS \u003ccode\u003efoo\u003c/code\u003e (\u003c/p\u003e\n\u003cp\u003e\u003ccode\u003eid\u003c/code\u003e int(10) unsigned NOT NULL auto_increment,\u003c/p\u003e\n\u003cp\u003e\u003ccode\u003ecol1\u003c/code\u003e varchar(10) NOT NULL,\u003c/p\u003e\n\u003cp\u003e\u003ccode\u003ecol2\u003c/code\u003e text NOT NULL,\u003c/p\u003e\n\u003cp\u003ePRIMARY KEY (\u003ccode\u003eid\u003c/code\u003e),\u003c/p\u003e\n\u003cp\u003eKEY \u003ccode\u003ecol1\u003c/code\u003e (\u003ccode\u003ecol1\u003c/code\u003e)\u003c/p\u003e\n\u003cp\u003e);\u003c/p\u003e\n\u003cp\u003eINSERT INTO `foo` (`id`, `col1`, `col2`) VALUES\n(1, ‘a’, ‘a’),\n(2, ‘b’, ‘b’),\n(3, ‘c’, ‘c’),\n(4, ‘d’, ‘d’), …\u003c/p\u003e"
July 2, 2010
根据status信息对MySQL服务器进行优化[精典]
"\u003cp\u003e对于SQL查询语句对于服务器系统资源的使用情况见:发现瓶颈 – Profiling(程序剖析) -MySQL Profiling\u003c/p\u003e\n\u003cp\u003e网上有很多的文章教怎么配置MySQL服务器,但考虑到服务器硬件配置的不同,具体应用的差别,那些文章的做法只能作为初步设置参考,我们需要根据自己的 情况进行配置优化,好的做法是MySQL服务器稳定运行了一段时间后运行,根据服务器的”状态”进行优化。\u003c/p\u003e\n\u003cp\u003emysql\u0026gt; show global status;\u003c/p\u003e\n\u003cp\u003e可以列出MySQL服务器运行各种状态值,另外,查询MySQL服务器配置信息语句:\u003c/p\u003e\n\u003cp\u003emysql\u0026gt; show variables;\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003e一、慢查询\u003c/strong\u003e\u003c/p\u003e\n\u003cp\u003emysql\u0026gt; show variables like ‘%slow%’;\n+——————+——-+\n| Variable_name | Value |\n+——————+——-+\n| log_slow_queries | ON |\n| slow_launch_time | 2 |\n+——————+——-+\u003c/p\u003e\n\u003cp\u003emysql\u0026gt; show global status like …\u003c/p\u003e"
July 2, 2010
mysql优化的重要参数 key_buffer_size table_cache 分享
"\u003cp\u003eMySQL服务器端的参数有很多,但是对于大多数初学者来说,众多的参数往往使得我们不知所措,但是哪些参数是需要我们调整的,哪些对服务器的性能影响最大呢?对于使用Myisam存储引擎来说,主要有key_buffer_size和table_cache两个参数。对于InnoDB引擎来说主要还是以innodb_开始的参数,也很好辨认。\n查看MySQL参数,可以使用\u003cstrong\u003eshow variables\u003c/strong\u003e和\u003cstrong\u003eshow status\u003c/strong\u003e命令查看,前者查看服务器静态参数,即在数据库启动后不会动态更改的值,比如缓冲区、字符集等。后者查看服务器的动态运行状态信息,即数据库运行期间动态变化的信息,比如锁,当前连接数等。\u003c/p\u003e\n\u003cp\u003ekey_buffer_size这个参数是用来设置索引块(index blocks)缓存的大小,它被所有线程共享,严格说是它决定了数据库索引处理的速度,尤其是索引读的速度。那我们怎么才能知道key_buffer_size的设置是否合理呢,一般可以检查状态值Key_read_requests和Key_reads,比例key_reads / key_read_requests 应该尽可能的低,比 …\u003c/p\u003e"
July 1, 2010
MYSQL慢查询日志分析
"\u003cp\u003eMysql5.5慢查询开启有些改变,在my.cnf的 [mysqld] section 添加以下几行即可.注意一定要在[mysqld]块,否则不起作用.\u003c/p\u003e\n\u003cblockquote\u003e\n\u003cp\u003elong_query_time = 0.001\nslow-query-log = ON\nslow_query_log_file = /usr/local/mysql/data/slow.log\nlog-queries-not-using-indexes = on\u003c/p\u003e\u003c/blockquote\u003e\n\u003cp\u003e===================================================\u003c/p\u003e\n\u003cp\u003emysql有一个功能就是可以log下来运行的比较慢的sql语句,默认是没有这个log的,为了开启这个功能,要修改my.cnf或者在mysql启动的时候加入一些参数。\n如果在my.cnf里面修改,需增加如下几行\u003c/p\u003e\n\u003cblockquote\u003e\n\u003cp\u003elong_query_time = 10\nslow_query_log = /var/log/slow.log\u003c/p\u003e\u003c/blockquote\u003e\n\u003cp\u003elong_query_time 是指执行超过多久的sql会被log下来,这里是10秒。\nslow_query_log 设置把日志写在那里,为空的时 …\u003c/p\u003e"
June 29, 2010
分享FreeBSD 8.0的十四条优化策略
"\u003cp\u003e【51CTO独家特稿】笔者目前是一位外企linux/unix系统工程师与项目实施工程师,而FreeBSD一直作为我们企业内部的开发服务器,具有稳定和高效的特点。本文根据笔者经验总结了十四条FreeBSD的优化策略。如无其它,以下所指FreeBSD均指FreeBSD 8.0_release。\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003e一、提高ports安装速度\u003c/strong\u003e\u003c/p\u003e\n\u003cp\u003eFreeBSD中的ports安装工具默认工具是用fetch,下载时经常出现龟速现象。为了提高ports安装速度,我推荐axel工具。相关make.conf文件配置步骤如下:\u003c/p\u003e\n\u003cpre tabindex=\"0\"\u003e\u003ccode\u003e\n\n cd /usr/ports/ftp/axel\n\n\n\n\n make install\n\n\n\n\n #修改/et/make.conf\n\n\n\n\n vi /etc/make.conf\n\n\n\n\n #加入以下内容\n\n\n\n\n FETCH_CMD=axel\n\n\n\n\n FETCH_BEFORE_ARGS= -n 10 -a\n\n\n\n\n FETCH_AFTER_ARGS=\n\n\n\n\n DISABLE_SIZE=yes …\u003c/code\u003e\u003c/pre\u003e"
June 27, 2010
MySQL 备份(推荐方法)
"\u003cp\u003e一般来说,你有两种可供选择的备份MySQL的方式—-mysqldump 或者mysqlhotcopy。\u003c/p\u003e\n\u003cp\u003emysqldump可以备份各种类型的数据表,但是mysqlhotcopy \u003ca href=\"http://dev.mysql.com/doc/refman/5.0/en/backup.html\"\u003e只适合\u003c/a\u003e 备份MyISAM和ISAM的数据表。所以使用mysqlhotcopy之前,你必须确认你的数据表是不 是有其他的存储引擎(storage engines)的。\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003eHow To:\u003c/strong\u003e\u003c/p\u003e\n\u003col\u003e\n\u003cli\u003e\n\u003cp\u003emysqldump -u root -p*** DBNAME | gzip -f\u0026gt;/backup/dbname.’date +%w’.dump.gz\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003emysqlhotcopy DBNAME -u root -p *** /backup\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ol\u003e\n\u003cp\u003e**两者速度:**因为 mysqlhotcopy会直接拷贝存储数据的文件,所以其速度是依赖于磁盘操作的速度,较之mysqldump要快些。下面是两种方式备份同一个数据的 时候的时间消耗比较:\u003c/p\u003e\n\u003col\u003e\n\u003cli\u003emysqldump 耗时22分39秒(gzip 压缩后文件大小为747M.)\u003c/li\u003e\n\u003cli\u003emysqlhotcopy 耗时6分07秒(tar gzip打包压缩后文件大小为1014M.)\u003c/li\u003e\n\u003c/ol\u003e\n\u003cp\u003e参考: …\u003c/p\u003e"