July 14, 2010
apache你必须知道的一些知识
"\u003cp\u003e一下是网管的一些面试题的,大部分和apache 有关,所以记下来供学习参考之用.\u003c/p\u003e\n\u003cp\u003e1,你认为组成web站点体系有哪些元素?\u003c/p\u003e\n\u003cp\u003e2,这样的配置,在apache起来后会有几个子进程? (别把这个问题想的简单化)\u003c/p\u003e\n\u003cblockquote\u003e\n\u003cp\u003eStartServers 5\nMinSpareServers 50\nMaxSpareServers 100\nMaxClients 150\nMaxRequestsPerChild 0\u003c/p\u003e\u003c/blockquote\u003e\n\u003cp\u003e3,在apache的worker MPM中,为什么ServerLimit要放到配置段最前面?\u003c/p\u003e\n\u003cp\u003e4,千兆网卡的极限pps是多少?是如何算出来的?\u003c/p\u003e\n\u003cp\u003e5,为什么lighttpd,nginx的并发性能比apache要高?\u003c/p\u003e\n\u003cp\u003e6,top命令里running的值表示什么意思?这个值和CPU数有什么关系?\u003c/p\u003e\n\u003cp\u003e7,在http header头里看到的:Last-Modified,Expires,max-age,etag这四者有什么关系?\u003c/p\u003e\n\u003cp\u003e8,一个web站点,如何计算所需要的带宽?公式是什么?\u003c/p\u003e\n\u003cp\u003e9,如何看http的并发连接数的?\u003c/p\u003e\n\u003cp\u003e10,FIN_WAIT2是在什么状 …\u003c/p\u003e"
July 14, 2010
Windows下 Apache 性能优化
"\u003cp\u003e一般来说,WinNT系统下使用IIS,而Apache在Linux下应用的比较多,但是依然有很多人在WinNT系统下使用Apache而非IIS,可能是基于对Windows系统的熟悉吧。今天就来说一下在Windows系统下如果优化Apache的性能。\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003empm_winnt.c\u003c/strong\u003e是专门针对Windows NT优化的MPM(多路处理模块),它使用一个单独的父进程产生一个单独的子进程,在这个子进程中轮流产生多个线程来处理请求。也就是说 mpm_winnt只能启动父子两个进程, 不能像Linux下那样同时启动多个进程。\u003c/p\u003e\n\u003cp\u003empm_winnt主要通过ThreadsPerChild和MaxRequestsPerChild两个参数来优化Apache,下面详细来说明一下。\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003eThreadsPerChild\u003c/strong\u003e\u003c/p\u003e\n\u003cp\u003e这个参数用于设置每个进程的线程数, 子进程在启动时建立这些线程后就不再建立新的线程了. 一方面因为mpm_winnt不能启动多个进程, 所以这个数值要足够大,以便可以处理可能的请求高峰; 另一方面该参数以服务器的响应速度为准的, 数目太大的反而会变慢。因此需要综合均衡一个合理的数值。\nmpm_winnt上的默认 …\u003c/p\u003e"
July 14, 2010
apache工作方式
"\u003cp\u003e\u003cstrong\u003e1\u003c/strong\u003e \u003cstrong\u003e、prefork.c模块(一个非线程型的、预派生的MPM)\u003c/strong\u003e prefork MPM 使用多个子进程,每个子进程只有一个线程。每个进程在某个确定的时间只能维持一个连接。在大多数平台上,Prefork MPM在效率上要比Worker MPM要高,但是内存使用大得多。prefork的无线程设计在某些情况下将比worker更有优势:它可以使用那些没有处理好线程安全的第三方模块,并且对于那些线程调试困难的平台而言,它也更容易调试一些。\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003eServerLimit\u003c/strong\u003e 20000\u003c/p\u003e\n\u003cp\u003eStartServers 5\u003c/p\u003e\n\u003cp\u003eMinSpareServers 5\u003c/p\u003e\n\u003cp\u003eMaxSpareServers 10\u003c/p\u003e\n\u003cp\u003eMaxClients 1000\u003c/p\u003e\n\u003cp\u003eMaxRequestsPerChild 0\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003eServerLimit\u003c/strong\u003e 2000\u003c/p\u003e\n\u003cp\u003e//默认的MaxClient最大是256个线程,如果想设置更大的值,就的加上 \u003cstrong\u003eServerLimit\u003c/strong\u003e 这个参数。20000是 \u003cstrong\u003eServerLimit\u003c/strong\u003e 这个参数的最大值。如果需要更大,则必须编译 \u003cstrong\u003eapache\u003c/strong\u003e,此前都是不需要重新编译 \u003cstrong\u003eApache\u003c/strong\u003e。\u003c/p\u003e\n\u003cp\u003e生效前提: …\u003c/p\u003e"
July 14, 2010
apache prefork优化及压力测试
"\u003cp\u003e优化apache prefork模式的参数, (384M内存openvz 的vps环境下面)\u003c/p\u003e\n\u003cpre tabindex=\"0\"\u003e\u003ccode\u003e\u0026lt;IfModule mpm_prefork_module\u0026gt;\nStartServers 12\nMinSpareServers 12\nMaxSpareServers 12\nMaxClients 12\nMaxRequestsPerChild 100\n\u0026lt;/IfModule\u0026gt;\n\u003c/code\u003e\u003c/pre\u003e\u003cpre tabindex=\"0\"\u003e\u003ccode\u003eStartServers是启动的进程数,Min和Max是最小最大进程数, MaxClients是最大可连接的客户端,MaxRequestPerChild是一个进程的生命周期内处理的请求数量,一旦达到设定的这个值,就回收进程。\n\u003c/code\u003e\u003c/pre\u003e\u003cp\u003e这里的vps环境是内存384M最大可用,openvz的vps.其它优化设置可以参考\u003c/p\u003e\n\u003cp\u003e测试一千个客户端并发时的压力,可以用apache自带的ab.exe。\u003c/p\u003e\n\u003cblockquote\u003e\n\u003cp\u003eab -n 1000 -c 1000 \u003ca href=\"http://www.netroby.com/index.php\"\u003ehttp://www.netroby.com/index.php\u003c/a\u003e\u003c/p\u003e\u003c/blockquote\u003e\n\u003cp\u003e\u003cstrong\u003e测试结果:\u003c/strong\u003e\u003c/p\u003e\n\u003cpre tabindex=\"0\"\u003e\u003ccode\u003eServer Software: …\u003c/code\u003e\u003c/pre\u003e"
July 13, 2010
发现瓶颈 – Profiling(程序剖析) -MySQL Profiling
"\u003cp\u003e\u003cstrong\u003eMySQL程序剖析 (Profiling)\u003c/strong\u003e\u003c/p\u003e\n\u003cp\u003e我们将要详细的讲到MySQL的剖析(Profiling),因为它很少依赖于你的应用。应用和服务器 级别的剖析有的时候都是有必要的。虽然应用级别的剖析可以给你整个应用性能的总揽。,但是对MySQL的剖析提供了信息是服务器级别所提供不了的。比如, 对PHP代码进行剖析不会显示MySQL有多少行语句执行了。\u003c/p\u003e\n\u003cp\u003e与应用剖析一样,目标是找出MySQL哪部分消耗过多的时间。我们不会剖析MySQL源码的,虽然有的 时候定制化MySQL安装很有用,但是这是另一本书的主题了。所替代的是,我们将教你一些可以技术来获取和分析不同种类的MySQL执行语句的信息。\u003c/p\u003e\n\u003cp\u003e你可以用在任意的颗粒级别以满足你的需求:你可能对整个服务器进行剖析或者单独检查一个语句或者一组语 句。下列信息你可以一点点的收集:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eMySQL经常访问的那些数据\u003c/li\u003e\n\u003cli\u003eMySQL经常执行语句的类型\u003c/li\u003e\n\u003cli\u003eMySQL线程大部分时间的状态\u003c/li\u003e\n\u003cli\u003eMySQL经常执行语句的子系统\u003c/li\u003e\n\u003cli\u003eMySQL执行语句所访问的数据类型\u003c/li\u003e\n\u003cli\u003e不同活动的类型,比如扫描索引。\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e我们先从范围最广的剖析开始,那就是服务器剖析,将教你更多细节。 …\u003c/p\u003e"
July 13, 2010
查看mysql索引使用情况
"\u003cp\u003e查看索引使用情况\u003c/p\u003e\n\u003cp\u003e如果索引正在工作, Handler_read_key 的值将很高,这个值代表了一个行被索引值读的次数,很低的值表明增加索引得到的性能改善不高,因为索引并不经常使用。\u003c/p\u003e\n\u003cp\u003eHandler_read_rnd_next 的值高则意味着查询运行低效,并且应该建立索引补救。这个值的含义是在数据文件中读下一行的请求数。如果你正进行大量的表扫描,该值较高。通常说明表索引不正确或写入的查询没有利用索引。\u003c/p\u003e\n\u003cp\u003e语法:\u003c/p\u003e\n\u003cblockquote\u003e\n\u003cp\u003emysql\u0026gt; show status like ‘Handler_read%’;\u003c/p\u003e\u003c/blockquote\u003e\n\u003cp\u003e有关更多MySQL之Handler_read_*介绍参考:\u003c/p\u003e"
July 13, 2010
mysql中使用source命令恢复sql备份文件时出现的问题
"\u003cp\u003e当使用mysql做数据库还原的时候,由于有些数据很大,总是失败并决 MySQL server has gone away之类的信息,并自动重新连接数据库且自动继续执行恢复操作,此时没有办法重新指定字符集,容易出现乱码,导致数据库恢复失败,只需要修改max_allowed_packet 参数的值即可.\u003c/p\u003e\n\u003cp\u003emysql根据配置文件会限制server接受的数据包大小。\u003c/p\u003e\n\u003cp\u003e有时候大的插入和更新会被max_allowed_packet 参数限制掉,导致失败。\u003c/p\u003e\n\u003ch2 id=\"1-方法1\"\u003e1) 方法1\u003c/h2\u003e\n\u003cp\u003e可以编辑my.cnf来修改(windows下my.ini),在[mysqld]段或者mysql的server配置段进行修改。\u003c/p\u003e\n\u003cpre tabindex=\"0\"\u003e\u003ccode\u003emax_allowed_packet = 20M\n\u003c/code\u003e\u003c/pre\u003e\u003cp\u003e如果找不到my.cnf可以通过\u003c/p\u003e\n\u003cpre tabindex=\"0\"\u003e\u003ccode\u003emysql --help | grep my.cnf\n\u003c/code\u003e\u003c/pre\u003e\u003cp\u003e去寻找my.cnf文件。\u003c/p\u003e\n\u003ch2 id=\"2-方法2\"\u003e2) 方法2\u003c/h2\u003e\n\u003cp\u003e\u003cstrong\u003e(很妥协,很纠结的办法)\u003c/strong\u003e\u003c/p\u003e\n\u003cp\u003e进入mysql server\u003c/p\u003e\n\u003cpre tabindex=\"0\"\u003e\u003ccode\u003emysql -h 主机 -u 账号 -p密码\nset global max_allowed_packet = 2*1024*1024*10\n\u003c/code\u003e\u003c/pre\u003e\u003cp\u003e然后关闭掉这此mysql server链 …\u003c/p\u003e"
July 11, 2010
[教程]freebsd下nagios安装教程
"\u003cp\u003e一、安装apache\u003c/p\u003e\n\u003cblockquote\u003e\n\u003cp\u003ecd /usr/ports/www/apache2\nmake install clean\u003c/p\u003e\u003c/blockquote\u003e\n\u003cp\u003e二、安装nagios和 Nagios-plugin\u003c/p\u003e\n\u003cp\u003e1.安装nagios主程序\u003c/p\u003e\n\u003cblockquote\u003e\n\u003cp\u003ecd /usr/ports/net-mgmt/nagios\nmake install clean\u003c/p\u003e\u003c/blockquote\u003e\n\u003cp\u003e在安装的过程中会自动安装nagios-plugin插件.常用的脚本这时会被安装在” \u003cstrong\u003e/usr/local/libexec/nagios/\u003c/strong\u003e“路径在resource.cfg里面有定义的,即常量 $USER1$的值目录里.\u003c/p\u003e\n\u003col start=\"2\"\u003e\n\u003cli\u003eNRpe 下载地址为: \u003ca href=\"http://www.nagios.org/download/addons\"\u003ehttp://www.nagios.org/download/addons\u003c/a\u003e\u003c/li\u003e\n\u003c/ol\u003e\n\u003cp\u003e//如果所要监控的服务器中有linux,不要直接使用ports 安装,因为ports安装过后,其格式为check_nrpe2, 但是linux 采用源码安装的为check_nrpe. 从而导致两者之间不能通信\u003c/p\u003e\n\u003cblockquote\u003e\n\u003c/blockquote\u003e\n\u003cblockquote\u003e\n\u003cp\u003e#cd /usr/local\u003c/p\u003e\u003c/blockquote\u003e\n\u003cp\u003e#fetch …\u003c/p\u003e"
July 11, 2010
FreeBSD利用poptop架设vpn指南
"\u003cp\u003e安装poptop\ncd /usr/ports/net/poptop\nmake install clean\n===\u0026gt; SECURITY REPORT:\nThis port has installed the following files which may act as network\nservers and may therefore pose a remote security risk to the system.\n/usr/local/sbin/pptpd\u003c/p\u003e\n\u003cp\u003eThis port has installed the following startup scripts which may cause\nthese network services to be started at boot time.\n/usr/local/etc/rc.d/pptpd\u003c/p\u003e\n\u003cp\u003ecd /usr/local/etc\ncp pptpd.conf.sample pptpd.conf\nvi pptpd.conf\ncd /usr/ports/net/poptop\nmake install clean\u003c/p\u003e\n\u003cp\u003e三、设 …\u003c/p\u003e"
July 11, 2010
centos下安装Nagios服务器监控软件
"\u003cp\u003enagios可以对服务器进行全面的监控,包括服务(apache、mysql、ntp、dns、disk、qmail和sshd等等)的状态,服务器的状态(up、down等\u003c/p\u003e\n\u003cp\u003e等)。它是一个完全GPL协议的开源软件包,包含有nagios主程序和它的各个插件,配置非常灵活,可以监视的项目很多,可以自定义shell脚\u003c/p\u003e\n\u003cp\u003e本进行监控服务,非常适合大型网络。\u003c/p\u003e\n\u003cp\u003enagios的包含主动监控和被动监控。\u003c/p\u003e\n\u003cp\u003e主动检查是通过监控中心的主机发出请求,让运行在远程主机上的nrpe守护进程收集信息,然后报告它,它通过web接口把数据显示在页面上。\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003e它的工作原理如下:\u003c/strong\u003e\u003c/p\u003e\n\u003cp\u003e被动监控是当远程被监控主机处于防火墙之内的时候,只有远程主机可以访问到监控中心,防火墙之内可以设置另外一个监控中心,远程监控\u003c/p\u003e\n\u003cp\u003e中心的nagios收集服务器信息以后,和nsca报告,由naca客户端报告naca的服务器端,然后报告监控中心的nagios,通过web接口显示监控结果。\u003c/p\u003e\n\u003cp\u003eNagios是一个监视系统和网络的应用程序。它监视你所指定主机和服务,当监视的内容变好或者变坏时发出警告。Nagios最初是被设计在Linux\u003c/p\u003e\n\u003cp\u003e平台上运行的,然而现在在其他平台上也 …\u003c/p\u003e"
July 9, 2010
show profiles 详解
"\u003cp\u003e\u003ca href=\"https://dev.mysql.com/doc/refman/5.7/en/show-profile.html\"\u003ehttps://dev.mysql.com/doc/refman/5.7/en/show-profile.html\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003e此功能将在新版本中被移除,性能分析使用新方法来代替。(官方提供了此命令的使用方法, 对于 show profile for query ID / show profile \u003cstrong\u003eCPU\u003c/strong\u003e for query ID 结果中每项的说明信息请参考: \u003ca href=\"https://www.cnblogs.com/itcomputer/articles/5056127.html\"\u003ehttps://www.cnblogs.com/itcomputer/articles/5056127.html\u003c/a\u003e)\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003eNote\u003c/strong\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003cp\u003eThese statements are deprecated and will be removed in a future MySQL release. Use the Performance Schema instead; see \u003ca href=\"https://dev.mysql.com/doc/refman/5.7/en/performance-schema.html\" title=\"Chapter 25 MySQL Performance Schema\"\u003eChapter 25, \u003cem\u003eMySQL Performance Schema\u003c/em\u003e\u003c/a\u003e.\u003c/p\u003e\u003c/blockquote\u003e\n\u003cp\u003e对于新版本我们也可以直接查询 \u003ccode\u003eINFORMATION_SCHEMA\u003c/code\u003e \u003ca href=\"https://dev.mysql.com/doc/refman/8.0/en/profiling-table.html\" title=\"25.20 The INFORMATION_SCHEMA PROFILING Table\"\u003e\u003ccode\u003ePROFILING\u003c/code\u003e\u003c/a\u003e . See \u003ca href=\"https://dev.mysql.com/doc/refman/8.0/en/profiling-table.html\" title=\"25.20 The INFORMATION_SCHEMA PROFILING Table\"\u003eSection 25.20, “The INFORMATION_SCHEMA PROFILING …\u003c/a\u003e\u003c/p\u003e"
July 8, 2010
Linux命令:ifconfig
"\u003ch2 id=\"linux命令ifconfig\"\u003eLinux命令:ifconfig\u003c/h2\u003e\n\u003cp\u003e\u003cstrong\u003e功能说明\u003c/strong\u003e:显示或设置网络设备\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003e英文说明:\u003cstrong\u003enetwork \u003cstrong\u003ei\u003c/strong\u003enter\u003c/strong\u003ef\u003c/strong\u003eaces \u003cstrong\u003econfig\u003c/strong\u003euring\u003c/p\u003e\n\u003ch3 id=\"语法\"\u003e语法\u003c/h3\u003e\n\u003cp\u003e\u003cstrong\u003e语 法\u003c/strong\u003e:ifconfig [网络设备][down up -allmulti -arp -promisc][add\u0026lt;地址\u0026gt;][del\u0026lt;地址\u0026gt;][\u0026lt;硬件地址\u0026gt;] [media\u0026lt;网络媒介类型\u0026gt;][mem_start\u0026lt;内存地址\u0026gt;][metric\u0026lt;数目\u0026gt;][mtu\u0026lt;字节\u0026gt;][netmask\u0026lt;子网掩码\u0026gt;][tunnel\u0026lt;地址\u0026gt;][-broadcast\u0026lt;地址\u0026gt;] [-pointopoint\u0026lt;地址\u0026gt;]\u003c/p\u003e\n\u003ch3 id=\"补充说明\"\u003e补充说明\u003c/h3\u003e\n\u003cp\u003e\u003cstrong\u003e补充说明\u003c/strong\u003e:ifconfig可设置网络设备的状态,或是显示目前的设置。\u003c/p\u003e\n\u003ch3 id=\"参数\"\u003e参数\u003c/h3\u003e\n\u003cp\u003e[网络设备] 网络设备的名称。\u003c/p\u003e\n\u003cp\u003edown 关闭指定的网络设备。\u003c/p\u003e\n\u003cp\u003eup 启动指定的网络设备。\u003c/p\u003e\n\u003cp\u003e-arp 打开或关闭指定接口上使用的ARP协议。前面加上一个负号用于关闭该选项。\u003c/p\u003e\n\u003cp\u003e-allmuti 关闭或启动指定接口的无区别模式。前面加上一个负号用于关闭该 …\u003c/p\u003e"
July 8, 2010
ubuntu关机命令
"\u003cp\u003e\u003cstrong\u003e1. 关机命令 shutdown\u003c/strong\u003e\u003c/p\u003e\n\u003cp\u003e好像ubuntu的终端中默认的是当前用户的命令,只是普通用户,因此在终端器中可以使用sudo -sh 转换到管理员root用户下执行命令。\u003c/p\u003e\n\u003cp\u003e1)shutdown –help\u003c/p\u003e\n\u003cp\u003e可以查看shutdown命令如何使用,当然也可以使用man shutdown命令。\u003c/p\u003e\n\u003cp\u003e2) shutdown -h now 现在立即关机\u003c/p\u003e\n\u003cp\u003e3)shutdown -r now 现在立即重启\u003c/p\u003e\n\u003cp\u003e4)shutdown -r +3 三分钟后重启\u003c/p\u003e\n\u003cp\u003e5)shutdown -h +3 “The System will shutdown after 3 minutes” 提示使用者将在三分钟后关机\u003c/p\u003e\n\u003cp\u003e6)shutdown -r 20:23 在20:23时将重启计算机\u003c/p\u003e\n\u003cp\u003e7)shutdown -r 20:23 \u0026amp; 可以将在20:23时重启的任务放到后台去,用户可以继续操作终端\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003e2. 中断命令\u003c/strong\u003e\u003c/p\u003e\n\u003cp\u003e1)执行完命令后(若没有转到后台),可以使用CTRL+C来中止命令\u003c/p\u003e\n\u003cp\u003e2)kill 程序编码\u003c/p\u003e\n\u003cp\u003e当命令在后台执行时系统会返回一个程序编码,例如:在使用 shutdown -r 20:23 \u0026amp; 系统返回系统编 …\u003c/p\u003e"
July 8, 2010
ubuntu查看内核版本和发行版本
"\u003cp\u003e查看 \u003cstrong\u003e内核\u003c/strong\u003e 版本:\u003c/p\u003e\n\u003cp\u003e方法一:uname -r\n输出:\n2.6.32-23-generic\n方法二:cat /proc/version\n输出:\nLinux version 2.6.32-23-generic (buildd@rothera) (gcc version 4.4.3 (Ubuntu 4.4.3-4ubuntu5) ) #37-Ubuntu SMP Fri Jun 11 07:54:58 UTC 2010\u003c/p\u003e\n\u003cp\u003e查看 \u003cstrong\u003e发行\u003c/strong\u003e 版本:`\u003c/p\u003e\n\u003cp\u003e方法一:cat /etc/issue`\n输出:\nUbuntu 8.04 \\n \\l\n方法二:lsb_release -a\n输出:\nNo LSB modules are available.\nDistributor ID: Ubuntu\nDescription: Ubuntu 10.04 LTS\nRelease: 10.04\nCodename: lucid\u003c/p\u003e"
July 8, 2010
ubuntu手动设置IP/DNS地址的方法
"\u003cp\u003eUbuntu的网络参数保存在文件 /etc/network/interfaces中,默认设置使用dhcp,内容如下:\u003c/p\u003e\n\u003cp\u003e# The primary network interface\nauto eth0\niface eth0 inet dhcp\u003c/p\u003e\n\u003cp\u003e设置静态ip的方法如下:\n1) 编辑 /etc/network/interfaces\n1.1)将dhcp 一行屏蔽\n# The primary network interface\nauto eth0\n#iface eth0 inet dhcp\n1.2)添加和静态ip有关的参数\u003c/p\u003e\n\u003cp\u003e# The primary network interface\niface eth0 inet static\naddress 192.168.0.10\nnetmask 255.255.255.0\ngateway 192.168.0.1\u003c/p\u003e\n\u003cp\u003e2)编辑 /etc/resolv.conf,设置dns\nnameserver 202.96.134.133\nnameserver 202.106.0.20\u003c/p\u003e\n\u003cp\u003e3)执行下面两个命令,启用新设置\n\u003cstrong\u003e$sudo ifdown eth0\n$sudo …\u003c/strong\u003e\u003c/p\u003e"