mysql “too many connections”

今早一起来就发现网站出现 mysql "too many connections"。在登录mysql无效的情况下。只能重启。 查找了些资料,总结一下解决的办法: 1、修改my.cnf配置,增大max_connections的值。mysql默认的最大连接数只有 100 set-variable = max_connections=300 2、检查PHP程序中是否使用了pconnect持久链接。若有的话,最好改成connect。 另外一个CU 网友 ipaddr 说过:“如果使用pconnect的话,那么,你的Apache进程数,应当少于Mysql的最大连接数!!!”具体没有测试过! 3、在给数据库授权的时候,最好不要直接使用root。使用普通授权用户,这样的话,即使达到了最大连接数,也可以使用root连接上,以诊断连接来自何处。   ================================== 粗略翻译一些mysql手册提到的解决办法: 如果在尝试连接mysql服务器时,你遇到 too many connections error ,这意味着mysqld的所有可用的连接数已被其他进程使用。mysql可配置的最大连接数的系统变量是 max_connections 。从mysql 5.1.15起,在apache web服务器中为增强性能其的默认值是 151(先前的默认值是 100),若你需支持更多连接数,你可对max_connections设置更大的值。 mysqld 实际上允许 max_connections+1个客户端连接。这个附加的连接是为了超级权限的用户而保留。且是授予超级权限的用户而非普通用户(它是不需要的),一个超级管理员可以在无特权用户连接数达到最大时进入server并使用 show processlist 来诊断问题。查看手册12.5.5.31, “SHOW PROCESSLIST Syntax”. mysqld的最大连接数依赖于上层的系统平台线程库,内存的可用数,每个线程可用内存,每个连接的负载,及请求响应时间。如果你有很多G的可用内存,且每个连接的负载较低或目标响应时间较低的情况下,Linux及Solaris可同时支持500-1000的连接.由于操作系统接口兼容性问题,在windows平台下限制在 (打开表×2+打开的连接数)<2048 。 增大打开文件的限制是有必要的。见Section 2.6, “Installing MySQL on Linux”,怎样提升Mysql操作句柄在操作系统上的限制   http://dev.mysql.com/doc/refman/5.1/en/too-many-connections.html B.5.2.7. Too many connections [Read More →]

Posted in mysql. 评论暂缺 »

基于thinkphp的sphinx简单扩展类

<?php /** * * @author blvming * * @link http://www.sphinxsearch.org * * @todo 基于thinkphp的sphinx简单扩展类,方便 逻辑层的调用。及与thinkphp配合分页使用 * * @copyright copyleft   * @version 1.0   *   */ import(‘Com.Sphinx.Util.Sphinxapi’); class sphinx extends SphinxClient  { public $limit; //每页显示的数量 public $startRc; //起始记录 public function __construct($limit=25) {          parent::SphinxClient(); //sphinx的api还是使用php4编写 if($_GET[C('VAR_PAGE')]) {          [Read More →]

Posted in php. 评论暂缺 »

thinkphp 的分类树转换

常用类库摘抄:thinkphp无限分类 /**  +———————————————————-  * 把返回的数据集转换成Tree  +———————————————————-  * @access public  +———————————————————-  * @param array $list 要转换的数据集  * @param string $pid parent 父id字段  * @param string $child child 子类标记  +———————————————————-  * @return array  +———————————————————-  */ function list_to_tree($list, $pk=’id’,$pid = ‘pid’,$child = ‘_child’,$root=0) {     // 创建Tree     $tree = array();     if(is_array($list)) {         // 创建基于主键的数组引用         [Read More →]

Posted in php. 评论暂缺 »

密码保护:关于我

无法提供任何摘要。这是一篇受保护的文章。

Posted in 心情. 查看留言请输入您的密码。 »

sphinx bug segmentation fault(core dumped)搜索出错。

在查询’测试’的时候.segmentation fault(core dumped) 出错了。该怎么办。 数据量100W。生成的.spi文件4.9G。建立索引已经完成。搜索就是segmentation fault(core dumped)。 怎么解决???  

Posted in sphinx. 评论暂缺 »

关于mysql innodb count(*)速度慢的解决办法

innodb引擎在统计方面和myisam是不同的,Myisam内置了一个计数器,所以在使用 select count(*) from table 的时候,直接可以从计数器中取出数据。而innodb必须全表扫描一次方能得到总的数量。要初步解决这个问题,需要做不同于myisam的一些工作: 1、使用第二索引(一般不使用主键索引),并且添加where条件,如:       select count(*) from product where comp_id>=0 ;      show index from product ; id primary key comp_id index 2、如果只需要粗略统计的话也可使用  show status from product 来得到大约值。这种方法可在数据分页中使用! 3、使用外部计数器,比如建立一个触发器来计数或者在程序上使用缓存方式定时计数,缺陷是这些方法会额外消耗一些资源! 参考资料: mysql高性能:http://www.mysqlperformanceblog.com/2006/12/01/count-for-innodb-tables/ mysql DBA:http://imysql.cn/2008_06_24_speedup_innodb_count   COUNT(*) for Innodb Tables   I guess note number one about MyISAM to Innodb migration is warning [Read More →]

Posted in mysql. 评论暂缺 »

php excel 乱码问题

Php导出Excel文件时有两个主要的过程:     1、定义文件名     2、填充Excel数据 这两个过程中可能会出现一些乱码问题,下面我来说一下解决办法: 解决文件名的乱码: 乱码原因:客户使用的中文版Windows系统平台,而Windows平台的文件名编码为gb2312(gbk),而我们网页编码为了跟进现存潮流一般都采用utf-8(国际化)编码,这时当我们:header("Content-Disposition: inline; filename=\"" . $filename . ".xls-:special:1:-")时就会出现乱码,假如你的网页编码就是gb2312那就不用考虑编码问题了。 解决办法:对$filename转码,执行:iconv(‘utf-8", "gb2312", $filename)。假如你的环境不支持iconv函数可以换别的函数,只要能将$filename的编码转为gbk就行。 但是这样问题又会来了,linux用户又会出现文件名乱码(因为linux平台文件名不是gbk编码)。 考虑到这个问题我采用两个办法:第一:放弃一部分客户,毕竟windows系统用户占绝大部分。第二:像gmail一样,提供两个下载地址。一个文件名gbk编码,一个文件名utf-8编码。 解决Excel内数据乱码: 乱码原因:网页编码与Excel编码不一致。 解决办法:既然编码不一致,那让其一致了就OK了。定义Excel的字符集:header("Content-Type: application/vnd.ms-excel; charset=UTF-8"),看到charset=UTF-8了吧,让其与您网页编码一致即可解决Excel内数据乱码的问题了,这个比较简单!

Posted in php. 评论暂缺 »

基于thinkphp的左右值无限分类

以前一直使用父子无限分类,这种分类结构清晰,使用也简单。但若分类数量很大的话,在查询上性能不佳。比如在做导航菜单中,我要根据某一分类查询出整个分类树的话(祖辈)。 性能消耗是非常大的,要么做递归,要么做多次查询。故,对于分类的数据量很大的情况,我推荐使用左右值,以减少查询上的麻烦。 具体算法可以参照这里 :http://bbs.phpchina.com/viewthread.php?tid=92550&extra=&page=4  

Posted in php. 评论暂缺 »

使用飞信监控系统负载

经常遇到系统 load average因某些原因突然飙涨到上百,以致系统假死。故根据飞信的php接口写了一个监控程序。当系统平均负载超过某个flag时,自动发短信到我手机上通知我。 要求:1、开启php的系统调用函数,注意,这有一定的安全隐患。         2、拥有飞信的账号,确切点说就是使用中国移动!         3、能操作shell 注:本系统使用的是centos 附件里有整个程序及Fetion类下载,有兴趣的请便 <?php /**  * @author blvming  * @link http://www.sphinxsearch.org  * @todo 本程序用于检测linux/unix系统负载,并对超过限定值时发送短信通知管理员  * @copyright copyleft  * @example crontab : * /2 * * * * /usr/bin/php  /webserver/chkload.php ; 每2分钟检测一次        * @warning  注意防火墙要打开 https(443)端口,另外还需要注意php的安全模式,能让php调用系统函数  * @version 1.0    *  *  */ set_time_limit(360); //多则无益 error_reporting(0); define(‘ALERT’,10);//普通警告 define(‘CRASH’,30); [Read More →]

Posted in lamp. 评论暂缺 »

何谓系统架构师

首先,何谓系统架构师? IBM工程师的说明是:    架构师的主要责任是提供开发人员和项目经理之间的共用沟通媒体。他们负责让业务规则及需求与工程实践及限制相适应,以确保成功 中文Wiki上的说明是:    系统架构师负责设计系统整体架构,从需求到设计的每个细节都要考虑到,把握整个项目,使设计的项目尽量效率高,开发容易,维护方便,升级简单 这两个解释,加起来基本说明了系统架构师的定义。 JAVA系统架构师应该看的几本书 Thinking in Java Effective Java UML基础、案例与应用 UML入门提高 软件工匠 设计模式——可复用面向对象软件的基础 重构-改善既有代码的设计 敏捷软件开发-原则、模式、实践 企业应用架构模式 Expert One-on-One J2EE Development without EJB 软件工程——实践者的研究方法 软件领导--成功开发软件的指导准则 后面的两本书,其实已经有点属于项目经理的范畴了,不过还不是很深入,看看对做成功的系统架构师是很有好处。 企业应用的系统架构师应该关注的几个方面 数据持久层的设计 在 Spring和Hibernate,ibatis出来以前,几乎每家公司都有自己的一套方法和架构,而架构师的50%的精力也会集中到这上面,EJB只是 增加架构师的负担。在Spring出来以后,基本上,大多数的架构师都从重复设计这个轮子的无用功中解脱出来了。Rod的轮子太好用了,基本上,大家只要 套上去就行了,或者,剩下最重要的事情,是选择一个合适的数据库连接池的开源项目吧 MVC架构的具体设计 MVC只是个概要的概念,具体如何实现的具体技术很多,根据项目设计最恰当的架构 大并发性访问 使用缓存,在数据量达到一定程度时,使用集群技术,优先考虑利用服务器的集群,其次是硬件集群,最后才是应用本身加入集群功能 超大数据量返回结果 尽量使用分页,优化SQL语句,循环处理数据时尽可能共用对象,只保留关键数据,及时释放内存占用 超大文件的读取和生成 尽可能快的读取大文件,并进行分析。写入大文件时,如何及时释放内存。学会适当利用操作系统的命令行资源来更快完成任务。 多线程的应用和管理 线程池的管理和监控,线程的启动(包括定时启动),结束,回收,线程资源的释放 用户界面可用性设计 平衡速度和可用性,恰当的使用异步和同步技术,展现关键数据为重点 分布式的数据交流和集成 选择恰当的数据交互方式,从最泛滥低效的Web Service到最实用的文件共享 群集系统的管理 如何确保缓存的同步?如何确保对象唯一性?如何保证各台机器的同步? 是否采用EJB?如何利用J2EE的特性(例如JNDI) 复杂的业务规则 [Read More →]