July 7, 2010
高并发高流量网站架构
"Web2.0的兴起,掀起了互联网新一轮的网络创业大潮。以用户为导向的新网站建设概念,细分了网站功能和用户群,不仅成功的造就了一大批新生的网站,也 极大的方便了上网的人们。但Web2.0以用户为导向的理念,使得新生的网站有了新的特点——高并发,高流量,数据量大,逻辑复杂等,对网站建设也提出了 新的要求。\n本文围绕高并发高流量的网站架构设计问题,主要研究讨论了以下内容:\n首先在整个网络的高度讨论了使用镜像网站,CDN内容分发网络等技术对负载均衡带来的便利及各自的优缺点比较。然后在局域网层次对第四层交换技术,包括硬 件解决方案F5和软件解决方案LVS,进行了简单的讨论。接下来在单服务器层次,本文着重讨论了单台服务器的Socket优化,硬盘级缓存技术,内存级缓 存技术,CPU与IO平衡技术(即以运算为主的程序与以数据读写为主的程序搭配部署),读写分离技术等。在应用层,本文介绍了一些大型网站常用的技术,以 及选择使用该技术的理由。最后,在架构的高度讨论了网站扩容,容错等问题。\n本文以理论与实践相结合的形式,结合作者实际工作中得到的经验,具有较广泛的适用性。\n1 引言\n1.1 互联网的发展 最近十 …"
July 7, 2010
vmstat查看FreeBSD服务器的内存使用情况
"在FreeBSD里运行vmstat命令执行结果如下:\n# vmstat procs memory page disk faults cpu r b w avm fre flt re pi po fr sr ad0 in sy cs us sy id 0 2 1 270512 20316 30 0 0 0 26 5 1223 1589 98 593 1 1 99\n当然,仅执行一次vmstat命令是无法反映真正的系统情况的。最好使用vmstat t [n]命令,例如 vmstat 5 5,表示在T(5)秒时间内进行N(5)次采样,或者干脆vmstat 1让系统每秒钟执行一次。\n下面是对各个参数的详细解释\nprocs: r–\u0026gt;在运行的进程数 b–\u0026gt;在等待io的进程数(等待i/o,paging等等) w–\u0026gt;可以进入运行队列但被替换的进程 memoy(以k为单位,包括虚拟内存和真实内存,正在运行或最近20秒在运行的进程所用的虚拟内存将被视为active) avm–\u0026gt;活动的虚拟内存 free–\u0026gt;空闲的内存\npages(统计错误页和活动页,每5秒平均一下,以秒为单位给出 …"
July 7, 2010
linux中查看系统资源占用情况的命令
"top: 主要参数 d:指定更新的间隔,以秒计算。 q:没有任何延迟的更新。如果使用者有超级用户,则top命令将会以最高的优先序执行。 c:显示进程完整的路径与名称。 S:累积模式,会将己完成或消失的子行程的CPU时间累积起来。 s:安全模式。 i:不显示任何闲置(Idle)或无用(Zombie)的行程。 n:显示更新的次数,完成后将会退出to 显示参数: PID(Process ID):进程标示号。 USER:进程所有者的用户名。 PR:进程的优先级别。 NI:进程的优先级别数值。 VIRT:进程占用的虚拟内存值。 RES:进程占用的物理内存值。 SHR:进程使用的共享内存值。\nS:进程的状态,其中S表示休眠,R表示正在运行,Z表示僵死状态,N表示该进程优先值是负数。 %CPU:该进程占用的CPU使用率。 %MEM:该进程占用的物理内存和总内存的百分比。 TIME+:该进程启动后占用的总的CPU时间。 Command:进程启动的启动命令名称,如果这一行显示不下,进程会有一个完整的命令行。 top命令使用过程中,还可以使用一些交互的命令来完成其它参数的功能。这些命令是通过快捷键启动的。 …"
July 7, 2010
freebsd下启动、停止 MySQL命令
"启动、停止 MySQL\n要启动 MySQL 的方法:(以本文将 MySQL 安装在 /usr/local/mysql 为例)\n# /usr/local/mysql/share/mysql.server start\n如果安装目录使用的是默认的话,请使用\n/usr/local/etc/rc.d/mysql-server start|stop|restart\n注意在第一次执行前,须将 mysql.server 设成可执行(chmod 744 mysql.server),另外可将这行指令加在 /etc/rc.d/rc.local 档中,让 MySQL 在开机时自动启动。\n要停止 MySQL 的方法:\n# /usr/local/mysql/bin/mysqladmin shutdown\n如果你为 MySQL Administrator root 帐号(非作业系统的 root)设了密码,要停止 MySQL 则必须像下列这样做,MySQL 会询问你 root 的密码後才会执行 shutdown 的工作:\n# /usr/local/mysql/bin/mysqladmin -u root -p …"
July 6, 2010
提高AJAX客户端响应速度
"AJAX的出现极大的改变了Web应用客户端的操作模 式,它使的用户可以在全心工作时不必频繁的忍受那令人厌恶的页面刷新。理论上AJAX技术在很大的程度上可以减少用户操作的等待时间,同时节约网络上的数 据流量。而然,实际情况却并不总是这样。用户时常会抱怨用了AJAX的系统响应速度反而降低了。 笔者从事AJAX方面的研发多年,参与开发了目前 国内较为成熟的AJAX平台-dorado。根据笔者的经验,导致这种结果的根本原因并不在AJAX。很多时候系统响应速度的降低都是由不够合理的界面设 计和不够高效的编程习惯造成的。下面我们就来分析几个AJAX开发过程中需要时刻注意的环节。\n合理的使用客户端编程和远程过程调用。 客户端的编程主要都是基于JavaScript的。而JavaScript是一种解释型 的编程语言,它的运行效率相对于Java等都要稍逊一筹。同时JavaScript又是运行在浏览器这样一个严格受限的环境当中。因此开发人员对于哪些逻 辑可以在客户端执行应该有一个清醒的认识。 在实际的应用中究竟应该怎样使用客户端编程,这依赖于开发人员的经验判断。这里很多问题是只可意会的。 由于篇幅有限,在这 …"
July 6, 2010
FreeBSD查看即时网络流量
"1、数据包 “netstat 1″一秒钟累计一次,”netstat 2″两秒钟累计一次。依此类推\n2、查看网 卡流量:”systat -if 1″每秒钟刷新一次,”systat -if 2″两秒钟刷新一次,依此类推"
July 6, 2010
MySQL压力测试工具 mysqlslap 使用简介
"MySQL从5.1.4版开始带有一个压力测试工具 mysqlslap,通过模拟多个并发客户端访问 mysql来执行测试,使用起来非常的简单。通过mysqlslap –help可以获得可用的选项,这里列一些主要的参数,更详细的说明参考 官方手册。\n–auto-generate-sql, -a\n自动生成测试表和数据\n–auto-generate-sql-load-type=type\n测试语句的类型。取值包括:read,key,write,update和mixed(默认)。\n–number-char-cols=N, -x N\n自动生成的测试表中包含多少个字符类型的列,默认1\n–number-int-cols=N, -y N\n自动生成的测试表中包含多少个数字类型的列,默认1\n–number-of-queries=N\n总的测试查询次数(并发客户数×每客户查询次数)\n–query=name,-q\n使用自定义脚本执行测试,例如可以调用自定义的一个存储过程或者sql语句来执行测试。\n–create-schema\n测试的schema,MySQL中schema也就是database\n–commint=N\n …"
July 5, 2010
linux scp 命令
"在 linux 之间复制 文件\n安装方法:\nyum -y install openssh-clients\nlinux 的 scp 命令 可以 在 linux 之间复制 文件 和 目录;\n================== scp 命令 scp 可以在 2个 linux 主机间复制文件;\n命令基本格式: scp [可选参数] file_source file_target\n====== 从 本地 复制到 远程 复制文件: 命令格式: scp local_file remote_username@remote_ip:remote_folder 或者 scp local_file remote_username@remote_ip:remote_file 或者 scp local_file remote_ip:remote_folder 或者 scp local_file remote_ip:remote_file 第1,2个指定了用户名,命令执行后需要再输入密码,第1个仅指定了远程的目录,文件名字不变,第2个指定了文件名; 第3,4个没有指定用户名,命令执行后需要输入用户名和密码,第3个 …"
July 3, 2010
FreeBSD 修改默认SHELL
"FreeBSD下默认的shell为CSH,可以通过命令 echo $SHELL来查看系统默认的shell是哪一个的。\n显示自己所使用的SHEEL命令: ps或echo $SHELL 修改默认SHELL为csh name:是指你登陆的名称\npw usermod -n name -s csh\n查看所有支持的shell\nfreebsd# cat /etc/shells /bin/sh /bin/csh /bin/tcsh\n到于bash的安装请参考:"
July 2, 2010
mysql中的max_connect_errors
"连接mysql server出来这个信息\n引用\nmessage from server: “Host ‘HP-2B6E9EC1747B’ is blocked because of many connection errors; unblock with ‘mysqladmin flush-hosts\u0026rsquo;”\n连接次数失败过多,并超过max_connect_erros的值后,服务器会直接拒绝来源机器的所有连接,只要把mysql server默认 max_connect_errors = 10 把这个值设置大点就好了,记得一定要执行mysqladmin flush-hosts命令来解锁,原来的主机才可以恢复正常连接的."