<?xml version="1.0" encoding="UTF-8" ?>
<rss version="2.0">
<channel>
<title><![CDATA[海浪家园]]></title> 
<link>http://www.icocean.com/blog/index.php</link> 
<description><![CDATA[没有比人更高的山,没有比脚更长的路...]]></description> 
<language>zh-cn</language> 
<copyright><![CDATA[海浪家园]]></copyright>
<item>
<link>http://www.icocean.com/blog/read.php/1847.htm</link>
<title><![CDATA[apache的keepalive和keepalivetimeout]]></title> 
<author>ocean &lt;admin@yourname.com&gt;</author>
<category><![CDATA[LAMP]]></category>
<pubDate>Tue, 24 Aug 2010 13:51:27 +0000</pubDate> 
<guid>http://www.icocean.com/blog/read.php/1847.htm</guid> 
<description>
<![CDATA[ 
	在APACHE的httpd.conf中，KeepAlive指的是保持连接活跃，类似于Mysql的永久连接。换一句话说，如果将KeepAlive设置为On，那么来自同一客户端的请求就不需要再一次连接，避免每次请求都要新建一个连接而加重服务器的负担。&nbsp;&nbsp;&nbsp;&nbsp;<br/><br/>KeepAlive的连接活跃时间当然是受KeepAliveTimeOut限制的。如果第二次请求和第一次请求之间超过KeepAliveTimeOut的时间的话，第一次连接就会中断，再新建第二个连接。&nbsp;&nbsp; <br/><br/>所以，一般情况下，图片较多的网站应该把KeepAlive设为On。但是KeepAliveTimeOut应该设置为多少秒就是一个值得讨论的问题了。&nbsp;&nbsp; <br/><br/>如果KeepAliveTimeOut设置的时间过短，例如设置为1秒，那么APACHE就会频繁的建立新连接，当然会耗费不少的资源；反过来，如果KeepAliveTimeOut设置的时间过长，例如设置为300秒，那么APACHE中肯定有很多无用的连接会占用服务器的资源，也不是一件好事。&nbsp;&nbsp; <br/><br/>所以，到底要把KeepAliveTimeOut设置为多少，要看网站的流量、服务器的配置而定。&nbsp;&nbsp; <br/><br/>其实，这和MySql的机制有点相似，KeepAlive相当于mysql_connect或mysql_pconnect，KeepAliveTimeOut相当于wait_timeout。&nbsp;&nbsp; <br/><br/>以下是我的配置： KeepAlive On KeepAliveTimeout 3 考虑到我的网站上有不少的图片，所以将KeepAlive设为On，一般的页面两次请求间隔不会超过3秒，所以这样设置，至尽运行状况良好<br/><br/>来源：站长之家<br/>Tags - <a href="http://www.icocean.com/blog/go.php/tags/apache/" rel="tag">apache</a> , <a href="http://www.icocean.com/blog/go.php/tags/keepalive/" rel="tag">keepalive</a> , <a href="http://www.icocean.com/blog/go.php/tags/keepalivetimeout/" rel="tag">keepalivetimeout</a>
]]>
</description>
</item><item>
<link>http://www.icocean.com/blog/read.php/1840.htm</link>
<title><![CDATA[Apache的模块选择]]></title> 
<author>ocean &lt;admin@yourname.com&gt;</author>
<category><![CDATA[LAMP]]></category>
<pubDate>Wed, 18 Aug 2010 03:24:20 +0000</pubDate> 
<guid>http://www.icocean.com/blog/read.php/1840.htm</guid> 
<description>
<![CDATA[ 
	Apache的模块选择是加固Apache的关键步骤之一。 我们所遵循的规则无非是老生常谈的:越少越好. 为了实现我们的功能和安全要求，以下模块必须启用:<br/><br/>模块名称&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 描述<br/>httpd_core&nbsp;&nbsp; Apache的核心模块，在Apache的每个拷贝中都必须有<br/>mod_access&nbsp;&nbsp; 提供基于客户端主机名、IP或者其他客户端特征的访问控制。 由于本<br/>模块对需要使用'order'、'allow'、'deny'等指令来说是必须的，所有启用<br/>mod_auth&nbsp;&nbsp; 提供用户认证功能 (HTTP Basic Authentication)<br/>mod_dir&nbsp;&nbsp; 提供查找并发送"index.html", "default.htm",这些index文件功能<br/>mod_log_config&nbsp;&nbsp; 实现Web服务器的日子功能<br/>mod_mime&nbsp;&nbsp; 用来设置HTML文档的字符集、内容编码、处理句柄 和MIME 类型等功能<br/><br/>除此之外所有的Apache模块都予以禁用。因为我们不需要它们。禁用那些模块后，进一步避免因为那些模块出现问题而导致服务器出现危险。<br/><br/>另外单独注一笔的是另外两个Apache的模块: mod_autoindex和mod_info . <br/>前者给目录提供自动索引,默认情况下是启用的，这导致没有index文件的服务器目录(比如<a href="http://server_name/icons/" target="_blank">http://server_name/icons/</a>）内容很容易就被泄漏,<br/>而后者：mod_info , 由于它的作用就是报告apache的配置，也不能启用。 <br/><br/>以上资料基于 apache 1.3.x 写于2005年,供参考.<br/>Tags - <a href="http://www.icocean.com/blog/go.php/tags/apache/" rel="tag">apache</a> , <a href="http://www.icocean.com/blog/go.php/tags/mod/" rel="tag">mod</a> , <a href="http://www.icocean.com/blog/go.php/tags/%25E6%25A8%25A1%25E5%259D%2597/" rel="tag">模块</a> , <a href="http://www.icocean.com/blog/go.php/tags/%25E9%2580%2589%25E6%258B%25A9/" rel="tag">选择</a> , <a href="http://www.icocean.com/blog/go.php/tags/%25E7%25A6%2581%25E7%2594%25A8/" rel="tag">禁用</a> , <a href="http://www.icocean.com/blog/go.php/tags/%25E5%2590%25AF%25E7%2594%25A8/" rel="tag">启用</a> , <a href="http://www.icocean.com/blog/go.php/tags/lamp/" rel="tag">lamp</a>
]]>
</description>
</item><item>
<link>http://www.icocean.com/blog/read.php/1733.htm</link>
<title><![CDATA[[缓存加速]eAccelerator与memcached的区别与用途]]></title> 
<author>ocean &lt;admin@yourname.com&gt;</author>
<category><![CDATA[LAMP]]></category>
<pubDate>Wed, 14 Apr 2010 03:47:22 +0000</pubDate> 
<guid>http://www.icocean.com/blog/read.php/1733.htm</guid> 
<description>
<![CDATA[ 
	&nbsp;&nbsp;&nbsp;&nbsp;eAccelerator和memcached，是目前较为主流的两个可使用在PHP之中的缓存加速工具．<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;eAccelerator专门为PHP开发，而memcached不仅仅用在PHP之中，其他所有的语言都可以使用．<br/><br/>　 eAccelerator的主要功能：<br/>&nbsp;&nbsp;&nbsp;&nbsp;1. 缓存PHP文件的执行代码：在被缓存的代码再次被调用时，将直接从内存读取，从而在很大程度了PHP运行的速度．<br/>&nbsp;&nbsp;&nbsp;&nbsp;2. 提供了共享内存操作函数：用户可以将自己的常见非资源对像，保存到内存之中，并可以随时读取出来．<br/><br/>　memcached的主要功能：<br/>　提供共享内存操作函数，可以保存和读取数据<br/><br/>　两者的共同点：<br/>　共同点：都提供了共享内存操作函数，可以用来保存和读取自己的数据<br/><br/>　两者的区别：<br/>　eAccelerator作为PHP的扩展库存在，那么仅在PHP运行时，可以操作和读写共享内存，一般情况，只能由操作共享内存的程序自己调用．<br/>　同时，eAccelerator可以缓存PHP程序的执行代码，提升程序的调入和执行速度．<br/>　memcached主要作为一个共享内存服务器，其PHP扩展库仅仅作为PHP到memcached的连接库存在，类似MySQL扩展库．因而，memcached可以完全脱离PHP，其共享的数据，可以被不同的程序调用．<br/><br/>　根据两者的不同，我们将他们使用在真真需要的地方：<br/>　eAccelerator主要用于单机PHP提速，缓存中间数据．对于实时性高，但数据操作量小的情况下，非常实用．<br/>　memcached用于分布式或者集群系统，多台服务器可以共享数据．对于实时性高，同时数据操作量大的情况下，非常实用．<br/><br/>乔楚 发表于2006年12月19日<br/>Tags - <a href="http://www.icocean.com/blog/go.php/tags/php/" rel="tag">php</a> , <a href="http://www.icocean.com/blog/go.php/tags/%25E7%25BC%2593%25E5%25AD%2598/" rel="tag">缓存</a> , <a href="http://www.icocean.com/blog/go.php/tags/%25E5%258A%25A0%25E9%2580%259F/" rel="tag">加速</a> , <a href="http://www.icocean.com/blog/go.php/tags/memcache/" rel="tag">memcache</a> , <a href="http://www.icocean.com/blog/go.php/tags/eaccelerator/" rel="tag">eaccelerator</a>
]]>
</description>
</item><item>
<link>http://www.icocean.com/blog/read.php/1694.htm</link>
<title><![CDATA[Error: Cant connect to MySQL server on localhost (10048)告诉你是怎么回事?]]></title> 
<author>ocean &lt;admin@yourname.com&gt;</author>
<category><![CDATA[LAMP]]></category>
<pubDate>Sun, 24 Jan 2010 16:37:20 +0000</pubDate> 
<guid>http://www.icocean.com/blog/read.php/1694.htm</guid> 
<description>
<![CDATA[ 
	Discuz! info: Can not connect to MySQL server<br/><br/>Time: 2007-11-13 6:25pm<br/>Script: /bbs/index.php<br/><br/>Error: Can't connect to MySQL server on 'localhost' (10048)<br/>Errno.: 2003<br/><br/>Similar error report has beed dispatched to administrator before.<br/> <br/>以上错误分几种情况说一下(首先您要确保您的服务器及服务器环境是正常的,装一个新论坛试一下就知道了):<br/><br/>1. 如果您是虚拟空间,出现以上错误,有可能是限制而引起,只有找您买虚拟空间的服务商解决,或是更换更好的空间<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br/>2. 有可能是攻击,攻击会导致服务器内存被占完,然后MYSQL数据库没内存用了,MYSQL就挂了,就会出现以上错误。<br/><br/>3. 有可能是程序出错,或是某个数据表出错,直接把整台服务器的MYSQL拉死了,然后出现上面错误。<br/><br/>4. 也有可能是服务器中安装的防火墙引起的。<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;如果您认为是网站论坛访问量过大，数据库连接超过最大连接数，MYSQL数据库服务停止了。你用fport工具查下看看，如果有十几个连接来自同一个IP，而且都是time-wait&nbsp;&nbsp;，那肯定就是这个原因了。<br/>&nbsp;&nbsp;&nbsp;&nbsp;注意：如果是真正的超过了MYSQL连接数限制,出错的提示信息会很清楚的告诉您是超限了，并会显示限制为多少.真正的MYSQL连接数超限错误提示信息不是上面这个错误提示。<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br/>解决方法(针对WIN系统)<br/>1, 首先到系统服务里面找到MYSQL服务并启动MYSQL服务.<br/>2, 到MYSQL安装目录找到MY.INI文件(linux下为 my.cnf),打开MY.INI查找max_connections,修改连接数为1000,查找wait_timeout,修改为wait_timeout = 5,最后重启IIS与MYSQL服务.<br/>Tags - <a href="http://www.icocean.com/blog/go.php/tags/mysql/" rel="tag">mysql</a> , <a href="http://www.icocean.com/blog/go.php/tags/%25E9%2585%258D%25E7%25BD%25AE/" rel="tag">配置</a> , <a href="http://www.icocean.com/blog/go.php/tags/errno/" rel="tag">errno</a> , <a href="http://www.icocean.com/blog/go.php/tags/2003/" rel="tag">2003</a>
]]>
</description>
</item><item>
<link>http://www.icocean.com/blog/read.php/1693.htm</link>
<title><![CDATA[mysql安装好需要优化配置一下]]></title> 
<author>ocean &lt;admin@yourname.com&gt;</author>
<category><![CDATA[LAMP]]></category>
<pubDate>Sun, 24 Jan 2010 16:35:47 +0000</pubDate> 
<guid>http://www.icocean.com/blog/read.php/1693.htm</guid> 
<description>
<![CDATA[ 
	mysql安装好需要优化配置一下<br/>2007-06-22 08:00<br/>mysql安装好需要优化配置一下,打开c:&#92;windows&#92;my.ini文件<br/>第一种<br/>QUOTE:<br/>#This File was made using the WinMySQLAdmin 1.4 Tool<br/>#2004-2-23 16:28:14<br/><br/>#Uncomment or Add only the keys that you know how works.<br/>#Read the MySQL Manual for instructions<br/><br/>[mysqld]<br/>basedir=D:/mysql<br/>#bind-address=210.5.*.*<br/>datadir=D:/mysql/data<br/>#language=D:/mysql/share/your language directory<br/>#slow query log#=<br/>#tmpdir#=<br/>#port=3306<br/>set-variable&nbsp;&nbsp;&nbsp;&nbsp; = max_connections=1500<br/>skip-locking<br/>#skip-networking<br/>set-variable&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; = key_buffer=384M<br/>set-variable&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; = max_allowed_packet=1M<br/>set-variable&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; = table_cache=512<br/>set-variable&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; = sort_buffer=2M<br/>set-variable&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; = record_buffer=2M<br/>set-variable&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; = thread_cache=8<br/># Try number of CPU's*2 for thread_concurrency<br/>set-variable&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; = thread_concurrency=8<br/>set-variable&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; = myisam_sort_buffer_size=64M<br/>#set-variable&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; = connect_timeout=5<br/>#set-variable&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; = wait_timeout=5<br/>server-id&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; = 1<br/>[isamchk]<br/>set-variable&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; = key_buffer=128M<br/>set-variable&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; = sort_buffer=128M<br/>set-variable&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; = read_buffer=2M<br/>set-variable&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; = write_buffer=2M<br/><br/>[myisamchk]<br/>set-variable&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; = key_buffer=128M<br/>set-variable&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; = sort_buffer=128M<br/>set-variable&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; = read_buffer=2M<br/>set-variable&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; = write_buffer=2M<br/>[WinMySQLadmin]<br/>Server=D:/mysql/bin/mysqld-nt.exe<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp; 这个方案，整体够用了，但是在pconnect和最大连接数上，需要研究max_connections没必要那么大，我个人认为几百就够，否则给服务器加大了不少负担，经常会当机连接超时的设置也要根据实际情况调整，大家可以自由调整，然后观察效果如何。<br/><br/>第二种<br/>QUOTE:<br/>　　7、MYSQL 的优化（/etc/my.cnf）<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 1)确认在“[mysqld]”部分加入了“skip-innodb”和“skip-bdb”参数；<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 2)确认在“[mysqld]”部分加入了“skip-name-resolve”和“skip-locking”参数；<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 3)如果不需要的话，可以将二进制日志（binlog）停掉，方法是将“log-bin”注释掉；<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 4)在内存允许的情况下，对一些参数进行重新配置，目标在于将大部分操作集中于内存中，尽量不进行磁盘操作，对于我的 MYSQL 服务器我是如下修改的，基于 2G 内存情况：<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; [mysqld]<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; set-variable&nbsp;&nbsp;&nbsp;&nbsp; = key_buffer=512M<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; set-variable&nbsp;&nbsp;&nbsp;&nbsp; = max_allowed_packet=4M<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; set-variable&nbsp;&nbsp;&nbsp;&nbsp; = table_cache=1024<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; set-variable&nbsp;&nbsp;&nbsp;&nbsp; = thread_cache=64<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; set-variable&nbsp;&nbsp;&nbsp;&nbsp; = join_buffer_size=32M<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; set-variable&nbsp;&nbsp;&nbsp;&nbsp; = sort_buffer=32M<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; set-variable&nbsp;&nbsp;&nbsp;&nbsp; = record_buffer=32M<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; set-variable&nbsp;&nbsp;&nbsp;&nbsp; = max_connections=512<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; set-variable&nbsp;&nbsp;&nbsp;&nbsp; = wait_timeout=120<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; set-variable&nbsp;&nbsp;&nbsp;&nbsp; = interactive_timeout=120<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; set-variable&nbsp;&nbsp;&nbsp;&nbsp; = max_connect_errors=30000<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; set-variable&nbsp;&nbsp;&nbsp;&nbsp; = long_query_time=1<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; set-variable&nbsp;&nbsp;&nbsp;&nbsp; = max_heap_table_size=256M<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; set-variable&nbsp;&nbsp;&nbsp;&nbsp; = tmp_table_size=128M<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; set-variable&nbsp;&nbsp;&nbsp;&nbsp; = thread_concurrency=8<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; set-variable&nbsp;&nbsp;&nbsp;&nbsp; = myisam_sort_buffer_size=128M<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 你可以根据“show status”命令返回的状态进行微调。我主要注意以下变量的数值，越小越好，最好为零：）<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Created_tmp_disk_tables<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Created_tmp_tables<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Created_tmp_files<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Slow_queries<br/>另外 mysql wait_timeout 那个值设置大了没用 做10左右就可了 (大C说得)<br/><br/>wait_timeout是使用长久连线时 空闲进程的控制 只要数据库在连接状态 他是不进行干预的 不管是否有查询或更新操作 把这个设置小一点 再使用pconnect就比较理想了 ;) <br/><br/>timeout的時間﹐我的經驗值是5-20﹐看你的SERVER的訪問量了~~ (梦飞说的)<br/><br/>访问量越大 这个值就应该越小 否则留出的空闲进程太多 会占用不必要的内存<br/>在一个15分钟在线3000人的论坛上 设置为3比较合适 同时打开pconnect<br/><br/>第三种<br/>数据库连接过多的错误，可能的原因分析及解决办法<br/><br/>QUOTE:<br/>分析 <br/><br/>系统不能连接数据库，关键要看两个数据： <br/>1、数据库系统允许的最大可连接数max_connections。这个参数是可以设置的。如果不设置，默认是100。最大是16384。 <br/>2、数据库当前的连接线程数threads_connected。这是动态变化的。 <br/>查看max_connections、max_connections的办法见后。 <br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;如果 threads_connected == max_connections 时，数据库系统就不能提供更多的连接数了，这时，如果程序还想新建连接线程，数据库系统就会拒绝，如果程序没做太多的错误处理，就会出现类似强坛的报错信息。 <br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 因为创建和销毁数据库的连接，都会消耗系统的资源。而且为了避免在同一时间同时打开过多的连接线程，现在编程一般都使用所谓数据库连接池技术。 <br/><br/>但数据库连接池技术，并不能避免程序错误导致连接资源消耗殆尽。 <br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 这种情况通常发生在程序未能及时释放数据库连接资源或其他原因造成数据库连接资源不能释放，但强坛系统估计不会发生这种低级的编程错误。 <br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 该错误的简便的检查办法是，在刷新强坛页面时，不断监视threads_connected的变化。如果max_connections足够大，而threads_connected值不断增加以至达到max_connections，那么，就应该检查程序了。当然，如果采用数据库连接池技术，threads_connected增长到数据库连接池的最大连接线程数时，就不再增长了。 <br/><br/>从强坛出错的情况看，更大的可能性是数据库系统没能进行适当地配置。下面提出一点建议。供参考 <br/><br/>让你们的工程师把MySQL的最大允许连接数从默认的100调成32000。这就不会老出现连接过多的问题了。 <br/><br/><br/>查看max_connections <br/><br/>进入MySQL，用命令：show variables <br/>查看数据库最大可连接数的变量值：max_connections <br/><br/><br/><br/>查看threads_connected <br/><br/>进入MySQL，用命令：show status <br/>查看当前活动的连接线程变量值：threads_connected <br/><br/><br/>设置max_connections <br/><br/>设置办法是在my.cnf文件中，添加下面的最后红色的一行： <br/><br/>-------------------------------------------------------------------------------- <br/><br/>[mysqld] <br/>port=3306 <br/>#socket=MySQL <br/>skip-locking <br/>set-variable = key_buffer=16K <br/>set-variable = max_allowed_packet=1M <br/>set-variable = thread_stack=64K <br/>set-variable = table_cache=4 <br/>set-variable = sort_buffer=64K <br/>set-variable = net_buffer_length=2K <br/>set-variable = max_connections=32000 <br/><br/><br/>-------------------------------------------------------------------------------- <br/><br/>修改完毕后，重启MySQL即可。当然，为了确保设置正确，应该查看一下max_connections。 <br/><br/>注意： <br/>1、虽然这里写的32000。但实际MySQL服务器允许的最大连接数16384； <br/>2、除max_connections外，上述其他配置应该根据你们系统自身需要进行配置，不必拘泥； <br/>3、添加了最大允许连接数，对系统消耗增加不大。 <br/>4、如果你的mysql用的是my.ini作配置文件，设置类似，但设置的格式要稍作变通。<br/>可见，mysql的优化，是多样化，且根据环境不同，必须灵活调整的，大家不可生搬硬套，自己慢慢体会吧<br/><a href="http://www.iloveu.sh.cn/leda/default.asp?cateID=5" target="_blank">http://www.iloveu.sh.cn/leda/default.asp?cateID=5</a><br/>Tags - <a href="http://www.icocean.com/blog/go.php/tags/mysql/" rel="tag">mysql</a> , <a href="http://www.icocean.com/blog/go.php/tags/%25E9%2585%258D%25E7%25BD%25AE/" rel="tag">配置</a>
]]>
</description>
</item><item>
<link>http://www.icocean.com/blog/read.php/1414.htm</link>
<title><![CDATA[apache log format中设置程序执行时间]]></title> 
<author>ocean &lt;admin@yourname.com&gt;</author>
<category><![CDATA[LAMP]]></category>
<pubDate>Wed, 01 Oct 2008 15:02:08 +0000</pubDate> 
<guid>http://www.icocean.com/blog/read.php/1414.htm</guid> 
<description>
<![CDATA[ 
	添加 [%Ts] ,例如:<br/>LogFormat “%v %h %l %u %t [%Ts] &#92;”%r&#92;” %>s %b”<br/><br/>Tags - <a href="http://www.icocean.com/blog/go.php/tags/apache/" rel="tag">apache</a> , <a href="http://www.icocean.com/blog/go.php/tags/log/" rel="tag">log</a> , <a href="http://www.icocean.com/blog/go.php/tags/format/" rel="tag">format</a> , <a href="http://www.icocean.com/blog/go.php/tags/%25E6%25A0%25BC%25E5%25BC%258F/" rel="tag">格式</a> , <a href="http://www.icocean.com/blog/go.php/tags/%25E6%2589%25A7%25E8%25A1%258C%25E6%2597%25B6%25E9%2597%25B4/" rel="tag">执行时间</a>
]]>
</description>
</item><item>
<link>http://www.icocean.com/blog/read.php/1413.htm</link>
<title><![CDATA[Apache日志不记录图片文件设置方法是]]></title> 
<author>ocean &lt;admin@yourname.com&gt;</author>
<category><![CDATA[LAMP]]></category>
<pubDate>Wed, 01 Oct 2008 15:00:22 +0000</pubDate> 
<guid>http://www.icocean.com/blog/read.php/1413.htm</guid> 
<description>
<![CDATA[ 
	编辑httpd.conf 设置如下:<br/><br/><FilesMatch “&#92;.(ico&#124;gif&#124;jpg&#124;png&#124;bmp&#124;swf)”><br/>SetEnv IMAG 1<br/></FilesMatch><br/>CustomLog logs/access_log combined env=!IMAG<br/><br/>这样记录文件access_log就不会记录ico&#124;gif&#124;jpg&#124;png&#124;bmp&#124;swf的访问记录,同样也可以加上css&#124;js才过滤css和js文件,效果很好.<br/>但是这种记录限制只限制于做虚拟主机的时候没有同时设定记录文件的时候会参照这个方式记录在access_log文件里.不过httpd.conf里默认还有另外一个类似不记录虚拟主机日志的日志文件.<br/><br/>(设定:服务器是windows20003,装有apache2.3 php5 mysql zend gd)<br/><br/>参照:<br/>&nbsp;&nbsp;&nbsp;&nbsp;#<br/>&nbsp;&nbsp;&nbsp;&nbsp;# The location and format of the access logfile (Common Logfile Format).<br/>&nbsp;&nbsp;&nbsp;&nbsp;# If you do not define any access logfiles within a <VirtualHost><br/>&nbsp;&nbsp;&nbsp;&nbsp;# container, they will be logged here.&nbsp;&nbsp;Contrariwise, if you *do*<br/>&nbsp;&nbsp;&nbsp;&nbsp;# define per-<VirtualHost> access logfiles, transactions will be<br/>&nbsp;&nbsp;&nbsp;&nbsp;# logged therein and *not* in this file.<br/>&nbsp;&nbsp;&nbsp;&nbsp;#<br/>&nbsp;&nbsp;&nbsp;&nbsp;CustomLog logs/access.log common<br/>这样会重复记录一个文件access.log ,所以可以注释掉上面那一行:<br/>#CustomLog logs/access.log common<br/><br/>好了,现在Apache日志不记录图片文件设置原理方法已经知道了,但是虚拟主机里面的日志文件格式是什么呢?<br/>先看我的虚拟主机的原来的配置内容:<br/><br/><VirtualHost *:80><br/>ServerAdmin <a href="mailto:daniel1228@gmail.com">daniel1228@gmail.com</a><br/>DocumentRoot E:&#92;web&#92;viatop<br/>ServerName&nbsp;&nbsp;viatop.cn<br/>ServerAlias *.viatop.cn<br/>ErrorLog logs/viatop.cn-error_log<br/>CustomLog logs/viatop.cn-access_log common<br/></VirtualHost><br/>看看日志文件viatop.cn-access_log里面还是记录了图片的访问记录,也就是上面说的那个配置对在虚拟主机里设置的日志文件不起作用.<br/><br/>为什么会这样呢?<br/>其实不是不起作用,而是作用域没有应用到而已,现在我改为:<br/><VirtualHost *:80><br/>ServerAdmin <a href="mailto:daniel1228@gmail.com">daniel1228@gmail.com</a><br/>DocumentRoot E:&#92;home&#92;user&#92;web&#92;viatop<br/>ServerName&nbsp;&nbsp;viatop.cn<br/>ServerAlias *.viatop.cn<br/>ErrorLog logs/viatop.cn-error_log<br/>CustomLog logs/viatop.cn-access_log combined env=!IMAG<br/></VirtualHost><br/><br/>这样就好了,虚拟主机里面的日志文件也不会记录图片的访问记录了.<br/>Tags - <a href="http://www.icocean.com/blog/go.php/tags/apache/" rel="tag">apache</a> , <a href="http://www.icocean.com/blog/go.php/tags/log/" rel="tag">log</a> , <a href="http://www.icocean.com/blog/go.php/tags/%25E4%25B8%258D%25E8%25AE%25B0%25E5%25BD%2595/" rel="tag">不记录</a> , <a href="http://www.icocean.com/blog/go.php/tags/%25E6%2596%2587%25E4%25BB%25B6%25E6%25A0%25BC%25E5%25BC%258F/" rel="tag">文件格式</a> , <a href="http://www.icocean.com/blog/go.php/tags/%25E8%25AE%25BE%25E7%25BD%25AE/" rel="tag">设置</a>
]]>
</description>
</item><item>
<link>http://www.icocean.com/blog/read.php/1412.htm</link>
<title><![CDATA[Apache/resin log输出格式]]></title> 
<author>ocean &lt;admin@yourname.com&gt;</author>
<category><![CDATA[LAMP]]></category>
<pubDate>Wed, 01 Oct 2008 14:58:47 +0000</pubDate> 
<guid>http://www.icocean.com/blog/read.php/1412.htm</guid> 
<description>
<![CDATA[ 
	Apache 一般有两种日志格式：<br/>通用日志格式(Common Log Format) 和 组合日志格式(Combined Log Format)<br/><br/>http.conf中默认格式如下：<br/>LogFormat “%h %l %u %t &#92;”%r&#92;” %>s %b” common<br/>LogFormat “%h %l %u %t &#92;”%r&#92;” %>s %b &#92;”%&#123;Referer&#125;i&#92;” &#92;”%&#123;User-agent&#125;i&#92;”" combined<br/><br/>也可以使用自定义，这里使用`分隔 日志参数<br/><br/>%h`%l`%u`%&#123;%Y-%m-%d %H:%M:%S&#125;t`%r`%s`%b`%&#123;Referer&#125;i`%&#123;User-Agent&#125;i`%&#123;X-Up-Calling-Line-ID&#125;i<br/><br/>输出结果如下：<br/>127.0.0.1 - frank [10/Oct/2000:13:55:36 -0700] “GET /apache_pb.gif HTTP/1.0″ 200 2326<br/>127.0.0.1 - frank [10/Oct/2000:13:55:36 -0700] “GET /apache_pb.gif HTTP/1.0″ 200 2326 “<a href="http://www.example.com/start.html" target="_blank">http://www.example.com/start.html</a>” “Mozilla/4.08 [en] (Win98; I ;Nav)”<br/>172.16.0.115`-`-`2008-03-13 11:00:03`GET /logo.gif HTTP/1.1`200`2893`<a href="http://172.16.0.252/index.jsp" target="_blank">http://172.16.0.252/index.jsp</a> `Opera/9.26 (Windows NT 5.1; U; zh-cn)`-<br/><br/>%h&nbsp;&nbsp;这是发送请求到服务器的客户的IP地址,如果客户和服务器之间存在代理，那么记录中的这个IP地址就是那个代理的IP地址，而不是客户机的真实IP地址。<br/>%l 这是由客户端identd进程判断的RFC1413身份(identity)，输出中的符号”-”表示此处的信息无效。除非在严格控制的内部网络中，此信息通常很不可靠，不应该被使用。只有在将IdentityCheck指令设为 On 时，Apache才会试图得到这项信息。<br/>%u 这是HTTP认证系统得到的访问该网页的客户标识(userid)，环境变量REMOTE_USER会被设为该值并提供给CGI脚本。如果状态码是401，表示客户未通过认证，则此值没有意义。如果网页没有设置密码保护，则此项将是”-”。<br/><br/>%&#123;%Y-%m-%d %H:%M:%S&#125;t<br/>这是服务器完成请求处理时的时间。<br/>其格式是：<br/>[日/月/年:时:分:秒 时区]<br/>日 = 2数字<br/>月 = 3字母<br/>年 = 4数字<br/>时 = 2数字<br/>分 = 2数字<br/>秒 = 2数字<br/>时区 = (+&#124;-)4数字<br/>可以在格式字符串中使用 %&#123;format&#125;t 来改变时间的输出形式，其中的format与C标准库中的strftime()用法相同。<br/>如：%Y-%m-%d %H:%M:%S — 2008-03-13 11:00:03<br/><br/>%r 引号中是客户端发出的包含许多有用信息的请求行。可以看出，该客户的动作是GET ，请求的资源是/logo.gif ，使用的协议是HTTP/1.1 。另外，还可以记录其他信息，如：格式字符串”%m %U%q %H”会记录动作、路径、查询字符串、协议，其输出和”%r”一样。<br/><br/>%s 这是服务器返回给客户端的状态码。这个信息非常有价值，因为它指示了请求的结果，或者是被成功响应了(以2开头)，或者被重定向了(以3开头)，或者出错了(以4开头)，或者产生了服务器端错误(以5开头)。<br/>服务器响应吗列表 ：<br/>&nbsp;&nbsp;Successful 2xx<br/>200 OK …..<br/>201 Created<br/>202 Accepted<br/>203 Non-Auth<br/>204 No Conte<br/>205 Reset Co<br/>206 Partial<br/>Redirection 3xx<br/>300 Multiple<br/>301 Moved Pe<br/>302 Found ..<br/>303 See Othe<br/>304 Not Modi<br/>305 Use Prox<br/>306 (Unused)<br/>307 Temporar<br/>&nbsp;&nbsp;Client Error 4x<br/>400 Bad Req<br/>401 Unautho<br/>402 Payment<br/>403 Forbidd<br/>404 Not Fou<br/>405 Method<br/>406 Not Acc<br/>407 Proxy A<br/>408 Request<br/>409 Conflic<br/>410 Gone ..<br/>411 Length<br/>412 Precond<br/>413 Request<br/>414 Request<br/>415 Unsuppo<br/>416 Request<br/>417 Expecta<br/>&nbsp;&nbsp;Server Error 5x<br/>500 Internal<br/>501 Not Impl<br/>502 Bad Gate<br/>503 Service<br/>504 Gateway<br/>505 HTTP Ver<br/><br/>%b 最后这项是返回给客户端的不包括响应头的字节数。如果没有信息返回，则此项应该是”-”，如果希望记录为”0″的形式，就应该用%B 。<br/>%&#123;Referer&#125;i<br/>“Referer”请求头。此项指明了该请求是被从哪个网页提交过来的，<a href="http://172.16.0.252/index.jsp" target="_blank">http://172.16.0.252/index.jsp</a> 这个网页应该包含有/logo.gif 或者其连接。<br/><br/>%&#123;User-Agent&#125;i<br/>“User-Agent”请求头。此项是客户端提供的浏览器识别信息。如：（Opera/9.26 (Windows NT 5.1; U; zh-cn)&nbsp;&nbsp; Mozilla/4.08 [en] (Win98; I ;Nav ）<br/>%&#123;X-Up-Calling-Line-ID&#125;i<br/>如果使用手机访问，并且移动（联通）网关可以返回访问者的手机号码。<br/>Tags - <a href="http://www.icocean.com/blog/go.php/tags/apache/" rel="tag">apache</a> , <a href="http://www.icocean.com/blog/go.php/tags/log/" rel="tag">log</a> , <a href="http://www.icocean.com/blog/go.php/tags/%25E6%2597%25A5%25E5%25BF%2597/" rel="tag">日志</a>
]]>
</description>
</item><item>
<link>http://www.icocean.com/blog/read.php/1411.htm</link>
<title><![CDATA[记录PHP错误日志]]></title> 
<author>ocean &lt;admin@yourname.com&gt;</author>
<category><![CDATA[LAMP]]></category>
<pubDate>Wed, 01 Oct 2008 14:57:35 +0000</pubDate> 
<guid>http://www.icocean.com/blog/read.php/1411.htm</guid> 
<description>
<![CDATA[ 
	对于PHP开发人员来说，一旦某个产品投入使用，那么第一件事就是应该将display_errors选项关闭，以免因为这些错误所透露的路径、数据库连接、数据表等信息而遭到黑客攻击。<br/><br/>某个产品投入使用后，难免会有错误信息，那么如何记录这些对开发人员非常有用的信息呢？<br/><br/>将PHP的log_errors开启即可，默认是记录到WEB服务器的日志文件里，比如Apache的error.log文件。<br/><br/>当然也可以记录错误日志到指定的文件中。<br/><br/><div class="code"># vim /etc/php.ini<br/>display_errors = Off<br/>log_errors = On<br/>error_log = /var/log/php-error.log</div><br/><br/>另外也可以设定error_log = syslog，使这些错误信息记录到操作系统的日志里。<br/>Tags - <a href="http://www.icocean.com/blog/go.php/tags/php/" rel="tag">php</a> , <a href="http://www.icocean.com/blog/go.php/tags/log/" rel="tag">log</a> , <a href="http://www.icocean.com/blog/go.php/tags/%25E6%2597%25A5%25E5%25BF%2597/" rel="tag">日志</a> , <a href="http://www.icocean.com/blog/go.php/tags/%25E9%2594%2599%25E8%25AF%25AF/" rel="tag">错误</a>
]]>
</description>
</item><item>
<link>http://www.icocean.com/blog/read.php/1400.htm</link>
<title><![CDATA[apache 内存优化]]></title> 
<author>ocean &lt;admin@yourname.com&gt;</author>
<category><![CDATA[LAMP]]></category>
<pubDate>Fri, 26 Sep 2008 07:44:26 +0000</pubDate> 
<guid>http://www.icocean.com/blog/read.php/1400.htm</guid> 
<description>
<![CDATA[ 
	我在一个行业应用软件中，因为业务需求（监控页面）使用ajax定时刷新技术，由于该页面长期运行，导致内存暴增，3天apache.exe,就占用近2G,通过google和百度的搜索，发现影响apache内存性能的主要有一下几个参数：<br/><br/>ThreadsPerChild <br/>MaxRequestsPerChild <br/>-------------<br/>KeepAlive<br/>MaxKeepAliveRequests<br/>KeepAliveTimeout<br/><br/><br/>参数简单介绍如下：<br/><br/>ThreadsPerChild：<br/><br/>这个指令设置了每个子进程建立的线程数。子进程在启动时建立这些线程后就不再建立新的线程了。如果使用一个类似于mpm_winnt只有一个子进程的MPM，这个数值要足够大，以便可以处理可能的请求高峰。如果使用一个类似于worker有多个子进程的MPM，每个子进程所拥有的所有线程的总数要足够大，以便可以处理可能的请求高峰。<br/><br/>MaxRequestsPerChild：<br/><br/>这个参数是说，apache进程在处理了多少个请求之后，必须退出，重新开始，以免在处理中的内存问题。<br/><br/>对于php脚本来说，把这个参数设置的小一些是有好处的，可以避免程序使用的内存持续增长对apache带来的压力：让这个参数定期释放内存，因为php是在脚本执行完毕后，自动释放只用的资源（内存）的。<br/><br/>根据资料建议，可以设置MaxRequestsPerChild来达到内存自动释放的目的，比如设置ThreadsPerChild 250，MaxRequestsPerChild为50？如果太小的话，重新产生一个apache进程也是要消耗资源的，这是一个平衡问题。<br/><br/>keepAlive：<br/><br/>KeepAlive 配置指令决定当处理完用户发起的 HTTP 请求后是否立即关闭 TCP 连接，如果 KeepAlive 设置为On，那么用户完成一次访问后，不会立即断开连接，如果还有请求，那么会继续在这一次 TCP 连接中完成，而不用重复建立新的 TCP 连接和关闭TCP 连接，可以提高用户访问速度。所以打开keepAlive时，请根据自己页面的访问量、页面数据类型来设置MaxKeepAliveRequests和KeepAliveTimeout。尤其是KeepAliveTimeout，根据你页面内包含的内联的.js和图片，设置适当大小。如果内联文件较多，建议设置MaxKeepAliveRequests和KeepAliveTimeout都大一些，如果大部分内容都在一个页面里，设置小一些可能性能更好。<br/><br/>通过修改以上几个参数，apache内存不在暴涨了，呵呵，我设置ThreadsPerChild 250，MaxRequestsPerChild 50，MaxKeepAliveRequests 50，KeepAliveTimeout 5 ，现在页面连开几天都没有暴涨情况了。<br/><br/>目前，正在配置我个人的服务器，以后会陆续发几篇freebsd+apache+php+mysql的配置文章，开始做自己的行业网站sosofun.cn。化工商务网 hg35.com 和 中国大枣网 dazao.net。申请落伍，往管理员批准！<br/>Tags - <a href="http://www.icocean.com/blog/go.php/tags/apache/" rel="tag">apache</a> , <a href="http://www.icocean.com/blog/go.php/tags/%25E5%2586%2585%25E5%25AD%2598/" rel="tag">内存</a> , <a href="http://www.icocean.com/blog/go.php/tags/threads/" rel="tag">threads</a> , <a href="http://www.icocean.com/blog/go.php/tags/child/" rel="tag">child</a> , <a href="http://www.icocean.com/blog/go.php/tags/max/" rel="tag">max</a> , <a href="http://www.icocean.com/blog/go.php/tags/requests/" rel="tag">requests</a> , <a href="http://www.icocean.com/blog/go.php/tags/keepalive/" rel="tag">keepalive</a>
]]>
</description>
</item>
</channel>
</rss>