June 18, 2009
MySQL 性能优化(show processlist中出现大量未认证的连接 建立连接缓慢 unauthenticated user)
"\u003cp\u003e症状:\nMySQL重启后,发现连接非常慢,建立连接后做普通操作还是非常快的,通过Show processlist发现大量unauthenticated user连接\u003c/p\u003e\n\u003cp\u003e解决办法:\nMySQL启动参数增加一个skip-name-resolve,即不启用DNS反响解析\u003c/p\u003e\n\u003cp\u003e解决过程(推荐学习 :))\u003c/p\u003e\n\u003col\u003e\n\u003cli\u003e同一局域网不同机器上连接MySQL服务器,观察响应速度;(非常慢)\u003c/li\u003e\n\u003cli\u003e连接建立后做一些简单的操作(非常快 和上面不符,说明不是服务器压力导致的)\u003c/li\u003e\n\u003cli\u003e通过tcpdump查看连接的时候详细的响应过程(能看到连接的时候和服务器的多次通讯及所耗费的时间)\u003c/li\u003e\n\u003cli\u003e发现正常响应很快,用户名、密码发送完后很长一段时间服务器才给响应\u003c/li\u003e\n\u003cli\u003e在服务器上进行同样的连接连接操作,试着分别用IP和机器名去连接看响应速度(看是不是IP解析的时候耗费时间了)\u003c/li\u003e\n\u003cli\u003e修改/etc/hosts文件,加入服务器、客户端的IP对应(没有作用 :()\u003c/li\u003e\n\u003cli\u003e增加启动参数skip-name-resolve速度立即加快了(问题解决)\u003c/li\u003e\n\u003c/ol\u003e\n\u003cp\u003e原因:\nMySQL的认证实际上是user+host的形式(也就是说user可以相同),所以MySQL在处理新连接时会试着去解析客户端 …\u003c/p\u003e"
June 16, 2009
Mysql 常见错误集锦!
"\u003cp\u003e今天因为mysql服务没打开,mysql不能使用,以前从没出现这种服务没开启的问题。因为以前服务一直都是开的。\u003c/p\u003e\n\u003cp\u003e一开始以为是权限问题,因为错误提示里有‘localhost’权限的字样,于是狂改,还是一直有问题,网上的类似问题也都试了,都无效。\u003c/p\u003e\n\u003cp\u003e于是决定卸了,重装,但在千钧一发之际,经一哥们指点,发现是服务没开。我晕死……………………………………….\u003c/p\u003e\n\u003cp\u003e看来我的Windows操作也太薄弱了。\u003c/p\u003e\n\u003cp\u003e这不,搞了一天mysql的错误,于是总结如下:\u003c/p\u003e\n\u003cp\u003e\u003cem\u003e\u003cstrong\u003e\u003cstrong\u003e\u003cstrong\u003e\u003cstrong\u003e\u003cstrong\u003e\u003cstrong\u003e\u003cstrong\u003e\u003cstrong\u003e\u003cstrong\u003e\u003cstrong\u003e\u003cstrong\u003e\u003cstrong\u003e\u003cstrong\u003eMysql 常见错误集锦\u003c/strong\u003e\u003c/strong\u003e\u003c/strong\u003e\u003c/strong\u003e\u003c/strong\u003e\u003c/strong\u003e\u003c/strong\u003e\u003c/strong\u003e\u003c/strong\u003e\u003c/strong\u003e\u003c/strong\u003e\u003c/strong\u003e\u003c/strong\u003e\u003c/em\u003e******\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003e1. Host ’…’ is blocked错误\u003c/strong\u003e\n如果你得到象这样的一个错误:\nHost ’hostname’ is blocked because of many connection errors.\nUnblock with ’mysqladmin flush-hosts’\u003c/p\u003e\n\u003cp\u003e这意味着,mysqld已经得到了大量(max_connect_errors)的主机’hostname’的在中途被中断了的连接请求。在max_connect_errors次失败请求后,mysqld认定出错了(象来字一个黑客的攻击),并且阻止该站 …\u003c/p\u003e"
June 16, 2009
MySQL内存管理、优化、查询缓存区
"\u003cp\u003e\u003cstrong\u003ebulk_insert_buffer_size = n\u003c/strong\u003e\n为一次插入多条新记录的INSERT命令分配的缓存区长度(默认设置是8M)。\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003ekey_buffer_size = n\u003c/strong\u003e\n用来存放索引区块的RMA值(默认设置是8M)。\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003ejoin_buffer_size = n\u003c/strong\u003e\n在参加JOIN操作的数据列没有索引时为JOIN操作分配的缓存区长度(默认设置是128K)。\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003emax_heap_table_size = n\u003c/strong\u003e\nHEAP数据表的最大长度(默认设置是16M); 超过这个长度的HEAP数据表将被存入一个临时文件而不是驻留在内存里。\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003emax_connections = n\u003c/strong\u003e\nMySQL服务器同时处理的数据库连接的最大数量(默认设置是100)。\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003equery_cache_limit = n\u003c/strong\u003e\n允许临时存放在查询缓存区里的查询结果的最大长度(默认设置是1M)。\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003equery_cache_size = n\u003c/strong\u003e\n查询缓存区的最大长度(默认设置是0,不开辟查询缓存区)。\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003equery_cache_type = 0/1/2\u003c/strong\u003e\n查询缓存区的工作模式:0, 禁用查询缓存区; 1,启用查询缓存区(默认设置); 2,”按需分配”模式,只响 …\u003c/p\u003e"
June 16, 2009
根据status信息对MySQL服务器进行优化
"\u003cp\u003e网上有很多的文章教怎么配置MySQL服务器,但考虑到服务器硬件配置的不同,具体应用的差别,那些文章的做法只能作为初步设置参考,我们需要根据自己的情况进行配置优化,好的做法是MySQL服务器稳定运行了一段时间后运行,根据服务器的”状态”进行优化。\u003c/p\u003e\n\u003cblockquote\u003e\n\u003cp\u003emysql\u0026gt; show global status;\u003c/p\u003e\u003c/blockquote\u003e\n\u003cp\u003e可以列出MySQL服务器运行各种状态值,另外,查询MySQL服务器配置信息语句:\u003c/p\u003e\n\u003cblockquote\u003e\n\u003cp\u003emysql\u0026gt; show variables;\u003c/p\u003e\u003c/blockquote\u003e\n\u003cp\u003e\u003cstrong\u003e一、慢查询\u003c/strong\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003c/blockquote\u003e\n\u003cpre tabindex=\"0\"\u003e\u003ccode\u003emysql\u0026gt; show variables like \u0026#39;%slow%\u0026#39;;\n+------------------+-------+\n| Variable_name | Value |\n+------------------+-------+\n| log_slow_queries | ON |\n| slow_launch_time | 2 |\n+------------------+-------+\n\nmysql\u0026gt; show global status like …\u003c/code\u003e\u003c/pre\u003e"
June 10, 2009
MFS分布式文件系统架设笔记
"\u003cp\u003e什么是MFS文件系统?\nMoose File System 是一个具备容错功能的网络分布式文件系统,它将数据分布在网络中的不同服务器上,MooseFS 通过 FUSE 使之看起来就是一个 Unix 的文件系统。\nMFS文件系统个人理解: 将分布在各个范围的计算机,将他们未使用的分区统一进行管理使用的一种文件系统.\n\u003cimg src=\"http://blog.haohtml.com/wp-content/uploads/2009/06/architecture.png\" alt=\"architecture\"\u003e\nMFS文件系统结构:\n包含3种角色:\n管理服务器managing server (master)\n数据存储服务器data servers (chunkservers)\n客户机挂载使用client computers\u003c/p\u003e\n\u003cp\u003e个人理解3种角色作用:\n管理服务器:负责各个数据存储服务器的管理,文件读写调度,文件空间回收以及恢复.多节点拷贝\n数据存储服务器:负责连接管理服务器,听从管理服务器调度,提供存储空间.\n客户端:挂接远程管理服务器上所管理的数据存储服务器,通过fuse内核接口.看起来共享的文件系统和\n本地unix文件系统使用一样的效果.\u003c/p\u003e\n\u003cp\u003e架设过程:\u003c/p\u003e\n\u003cp\u003e服务器2台\n(最少是2台,一台服务器做管理服务器,数据存储服务器,以及客户端3种角色,另外一台计算机做数据存储和客户端)\n称第1台计 …\u003c/p\u003e"
June 10, 2009
如何查看文件的创建时间?
"\u003cp\u003e刚刚去开了一台pc,真实环境!\u003c/p\u003e\n\u003cp\u003e一步步地做完!验证完成,楼上所言,正确!\u003c/p\u003e\n\u003cp\u003e当修改文件后,\n$ls -Ul file\u003c/p\u003e\n\u003cp\u003e和\u003c/p\u003e\n\u003cp\u003e$stat -s file\u003c/p\u003e\n\u003cp\u003e中 st_birthtime=number ,需要执行$date -r number ;\u003c/p\u003e\n\u003cp\u003e比较后,结果一致,得到最初创建文件的时间值!\u003c/p\u003e\n\u003cp\u003e注:以上命令可能在虚拟机上执行不起作用的.\u003c/p\u003e"
June 10, 2009
FreeBSD传真服务器(FreeBSD+HylaFax+Apache+php+Mysql+AvantFax)
"\u003cp\u003e\u003ca href=\"http://bbs3.chinaunix.net/thread-1456005-1-1.html\"\u003ehttp://bbs3.chinaunix.net/thread-1456005-1-1.html\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003eFreeBSD安装选择Minimal+Ports\n域名:fax.test.org IP:192.168.1.203 新建用户:vincent 属于wheel组\u003c/p\u003e\n\u003cp\u003eHandbook\n\u003ca href=\"http://cnsnap.cn.freebsd.org/doc/zh_CN.GB2312/books/handbook/install.html\"\u003ehttp://cnsnap.cn.freebsd.org/doc … ndbook/install.html\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003e开启FTP服务\u003c/p\u003e\n\u003cp\u003e编辑/etc/inetd.conf文件去掉ftp前的注释’#’。\u003c/p\u003e\n\u003cp\u003e#vi /etc/inetd.conf\nftp stream tcp nowait root /usr/libexec/ftpd ftpd -l\u003c/p\u003e\n\u003cp\u003e启动inetd程序\n#/etc/rc.d/inetd start\u003c/p\u003e\n\u003cp\u003e添加vincent用户,用于FTP登录上传文件\n#pw useradd vincent -s /bin/csh -d /home/vincent -m -g wheel -h 0\u003c/p\u003e\n\u003cp\u003e—————————————————————————-\u003c/p\u003e\n\u003cp\u003e使用wget加快ports软件下载\u003c/p\u003e\n\u003cp\u003e安 …\u003c/p\u003e"
June 8, 2009
国内各种主流CMS系统的比较和汇总
"\u003cp\u003e国内各种主流CMS系统的比较和汇总\u003c/p\u003e\n\u003cp\u003eCMS(Content Management System),中文叫网站内容管理系统,大概2004以前,如果想进行网站内容管理,基本上都是靠手工维护,但 千变万化的信息流,但没有好的程序支持,还继续靠手工完成是不可能的事,如果有一个好的系统来支撑你的网站,那将节省大量的人力物力,开发者就可能给客户 一个软件包,可以用它定期人工修改网站。只要你配置安装好,你的编辑,在线记者,更新员只要定期更新数据,剩下的事就交给CMS去处理。\u003c/p\u003e\n\u003cp\u003eAsp\u003c/p\u003e\n\u003cp\u003e动易CMS管理系统,官方网站:\u003ca href=\"http://www.asp163.net/\"\u003ehttp://www.asp163.net/\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003e这套是国产AspCMS中非常强大的系统,从3.0的简单的一个文章系统到现在的2005的版本,一路走来,动易不断完善,而且也不断加强功能,包括个人版,学校版,政府版,企业版,后台包括的功能,信息发布,类别管理,权限控制,信息采集,而且跟第三方的程序,比如论坛,商城(2005的已经自带了),blog可以完美结合,基本上可以满足一个中大型网站的要求,但Asp和Access的的局限性,还有本身功能Dll的限制,使得免费版差不多成鸡肋,\u003c/p\u003e\n\u003cp\u003e风讯官方网站: …\u003c/p\u003e"
June 7, 2009
jQuery/Ajax/PHP/Json 的一个综合例子
"\u003cp\u003ejQuery 是一个优秀的 Javascript 框架,对 js 进行了优秀的包装,提供了许多方便的功能。jQuery 对 ajax 的包装也堪称优秀。\u003c/p\u003e\n\u003cp\u003ejQuery 可以以 json 文件传输协议来传输数据(类似 xml,而且大有取代 xml 的趋势),而网站后台代码必须与之配合使用。PHP 是用 json_encode 函数来对返回的数组数据进行编码的,但这个函数只有 PHP5.2版本以上才支持。\u003c/p\u003e\n\u003cp\u003e从网上找到一个 json 的操作类,本人在 PHP4.4.7 版本下测试通过。本人还建了个函数 function my_json_encode($phparr),使代码兼容 PHP5.2 以上版本。\u003c/p\u003e\n\u003cp\u003e示例代码(包括 json 的类包软件)可以在以下网址下载:\u003c/p\u003e\n\u003cp\u003e以下是全部代码:\u003c/p\u003e\n\u003cp\u003ejQuery Ajax 实例演示\u003c/p\u003e\n\u003cp\u003e输入姓名:\u003c/p\u003e\n\u003cp\u003e输入年龄:\u003c/p\u003e\n\u003cp\u003e输入性别:\u003c/p\u003e\n\u003cp\u003e输入工作:\u003c/p\u003e\n\u003cp\u003e提交POST提交GET提交\u003c/p\u003e\n\u003cp\u003ePHP 文件 ajax_json.php:\u003c/p\u003e\n\u003cp\u003eencode($phparr);\n}\n}\n?\u0026gt;\u003c/p\u003e"
June 3, 2009
jquery 轻松实现 双击编辑文本框
"\u003cpre tabindex=\"0\"\u003e\u003ccode\u003e\u0026lt;script type=\u0026#34;text/javascript\u0026#34;\u0026gt;\n$(document).ready(function(){\n\t$(\u0026#34;.update\u0026#34;).dblclick(function(){\n\t\tid = $(this).attr(\u0026#39;id\u0026#39;);\n\t\ttext = $(this).text();\n\t\t\tif(text){\n\t\t\t$(this).html(\u0026#34;\u0026lt;input type=\u0026#39;text\u0026#39; size=12 name=\u0026#34;+id+\u0026#34; value=\u0026#34;+text+\u0026#34;\u0026gt;\u0026#34;);\n\t\t\t$(\u0026#34;.update \u0026gt; input\u0026#34;).focus().blur(function(){\n\t\t\t\t$.ajax({\n\t\t\t\t type: \u0026#34;POST\u0026#34;,\n\t\t\t\t url: \u0026#34;/data/dbedit\u0026#34;,\n\t\t\t\t data: …\u003c/code\u003e\u003c/pre\u003e"
May 27, 2009
把FreeBSD5.3升级到5.4版本
"\u003cp\u003e本来系统装的是FreeBSD5.3,但是新版的FreeBSD5.4 Release发布了,而且改动不小,呵呵,赶紧升级吧。\u003c/p\u003e\n\u003cp\u003e先更新源码结构:\n# cd /usr/share/examples/cvsup\n修改一下 standard-supfile 文件:\n# vi standard-supfile\n把主机和版本修改掉:\n把*default host=CHANGE_THIS.FreeBSD.org\n改为:*default host=cvsup.jp.freebsd.org或者cvsup.freebsdchina.org,呵呵,其实日本的服务器也不慢。\n把:*default release=cvs tag=RELENG_5_3\n改为:*default release=cvs tag=RELENG_5_4\u003c/p\u003e\n\u003cp\u003e:wq 保存退出。\n开始更新,如果没有cvsup命令,就自己去ports一个回来。\n# cvsup -g -L2 standard-supfile\n等一段时间,多久根据你的网速和机器配置有关。\u003c/p\u003e\n\u003cp\u003e更新回来之后,现在正式开始安装内核。先进入源代码目录:\n# cd /usr/src\n开始编译,这 …\u003c/p\u003e"
May 27, 2009
"\u003cp\u003e字符串,恐怕应该算是MYSQL里面最复杂的类型了吧?几乎目前所有的问题,都是出在与字符有关的数据列上,大致有几种\n1、字符串的查询(以下如果不特指,都是指中文),搜索一个中文的时候,不管是模糊还是精确,往往结果都会有与搜索内容不一致的数据在里面\n2、编码,现在大家都知道MYSQL连接上后,先执行一下mysql_query(‘set names GBK’,$conn)这类的语句,从MYSQL4.0升级到4.1及以上版本的朋友在这上面吃的苦不少了。网上关于这类的提问也是最多的\n3、索引、效率,varchar是MYSQL所特有的字段,而且长度可变,char则是固定长度的字符串。\n在MYSQL所支持的几个字符串格式里面,char和varchar是用的最多的,char是定长字段,,也就是说,不管字符串的实际长度有多少,CHAR(10)将永远占用10个字节。字符串如果前端有空格,那么在存储的时候会自动被数据库去掉,相当于先执行trim($string),再进行存储,如果不满10个字节,将会采用空格填满,读取数据时,MYSQL会自动将这些空格去掉。看到这里,恐怕它的缺点之一就明显的暴露了,CHAR不 …\u003c/p\u003e"
May 26, 2009
mysql中自动修改数据表的设计(默许的数据列修改)
"\u003cp\u003e9.9.6 自动修改数据表的设计(默许的数据列修改)\u003c/p\u003e\n\u003cp\u003e在创建(create table)或修改(alter table)一个数据表的时候,MYSQL会在特定条件下对这个数据表的设计方案自动做出一些修改,其理由或者是那么做可以让数据表的效率更高,或者是设计思路MYSQL无法实现.\n这里要特别提醒那些从期货数据库系统迁移过来的读者注意:MYSQL在对数据表设计方案自动做出勤率修改时不会给出任何提示,所以一事实上要用SHOW CREATE TABLE命令去检查一下最终的数据表设计方案是不是所想像的样子。在下面的例子里。MYSQL自做主张地把一个CHAR(2)数据列改成了一个VARCHAR(20)数据列,还给那两个数据列加上了defautl null属性.\n\u003cstrong\u003eCREATE TABLE test1(col1 VARCHAR(20), col2 CHAR(20))\u003c/strong\u003e\nshow create table test1\n\u003cstrong\u003ecreate table test1(\ncol1 varchar(20) default null,\ncol2 varchar(20) default null\n)engine=MYISAM …\u003c/strong\u003e\u003c/p\u003e"
May 26, 2009
php计算两个数组交集和差集
"\u003cp\u003earray_intersect\n(PHP 4 \u0026gt;= 4.0.1, PHP 5)\u003c/p\u003e\n\u003cp\u003earray_intersect — 计算数组的交集说明\narray array_intersect ( array array1, array array2 [, array …])\narray_intersect() 返回一个数组,该数组包含了所有在 array1 中也同时出现在所有其它参数数组中的值。注意键名保留不变。\u003c/p\u003e\n\u003cp\u003e例子 1. array_intersect() 例子\u003c/p\u003e\n\u003cp\u003e“green”, “red”, “blue”);\n$array2 = array (“b” =\u0026gt; “green”, “yellow”, “red”);\n$result = array_intersect ($array1, $array2);\n?\u0026gt;\u003c/p\u003e\n\u003cp\u003e这使得 $result 成为:\u003c/p\u003e\n\u003cp\u003eArray\n(\n [a] =\u0026gt; green\n [0] =\u0026gt; red\n)\n注: 两个单元仅在 (string) $elem1 === (string) $elem2 时被认为是相同的。也就是说,当字符串的表达是一样的时候。 …\u003c/p\u003e"
May 25, 2009
php中的$_SERVER or $_ENV
"\u003cp\u003e服务器变量:$_SERVER\n注: 在 PHP 4.1.0 及以后版本使用。之前的版本,使用 $HTTP_SERVER_VARS。\u003c/p\u003e\n\u003cp\u003e$_SERVER 是一个包含诸如头信息(header)、路径(path)和脚本位置(script locations)的数组。数组的实体由 web 服务器创建。不能保证所有的服务器都能产生所有的信息;服务器可能忽略了一些信息,或者产生了一些未在下面列出的新的信息。这意味着,大量的这些变量在 CGI 1.1 规范中说明,所以应该仔细研究一下。\u003c/p\u003e\n\u003cp\u003e环境变量:$_ENV\n注: 在 PHP 4.1.0 及以后版本使用。之前的版本,使用 $HTTP_ENV_VARS。\u003c/p\u003e\n\u003cp\u003e在解析器运行时,这些变量从环境变量转变为 PHP 全局变量名称空间(namespace)。它们中的许多都是由 PHP 所运行的系统决定。完整的列表是不可能的。请查看系统的文档以确定其特定的环境变量。\u003c/p\u003e\n\u003cp\u003e其它环境变量(包括 CGI 变量),无论 PHP 是以服务器模块或是以 CGI 处理方式运行,都在这里列出了。\u003c/p\u003e\n\u003cp\u003e这是一个“superglobal”,或者可以描述为自动全局变量。这只不过意味这它在所有的脚本中 …\u003c/p\u003e"