August 26, 2009
nginx 502 bad gateway 解决办法
"\u003cp\u003eNGINX 502 Bad Gateway错误是FastCGI有问题,造成NGINX 502错误的可能性比较多。将网上找到的一些和502 Bad Gateway错误有关的问题和排查方法列一下,先从FastCGI配置入手:\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003e1.FastCGI进程是否已经启动\u003c/strong\u003e\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003e2.FastCGI worker进程数是否不够\u003c/strong\u003e\n运行 netstat -anpo | grep “php-cgi” | wc -l 判断是否接近FastCGI进程,接近配置文件中设置的数值,表明worker进程数设置太少\n通过命令查看服务器上一共开了多少的 php-cgi 进程\u003c/p\u003e\n\u003cblockquote\u003e\n\u003cp\u003eps -fe |grep “php” | grep -v “grep” | wc -l\u003c/p\u003e\u003c/blockquote\u003e\n\u003cp\u003e使用如下命令查看已经有多少个php-cgi进程用来处理tcp请求\u003c/p\u003e\n\u003cblockquote\u003e\n\u003cp\u003enetstat -anop | grep “php” | grep -v “grep” | wc -l\u003c/p\u003e\u003c/blockquote\u003e\n\u003cp\u003e接近配置文件中设置的数值,表明worker进程数设置太少\n参见: \u003ca href=\"http://blog.s135.com/post/361.htm\"\u003ehttp://blog.s135.com/post/361.htm\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003e3.FastCGI …\u003c/strong\u003e\u003c/p\u003e"
August 24, 2009
MySQL中UNION和UNION ALL的区别
"\u003cp\u003e在数据库中,UNION和UNION ALL关键字都是将两个结果集合并为一个,但这两者从使用和效率上来说都有所不同。\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003eMySQL中的UNION\u003c/strong\u003e\nUNION在进行表链接后会筛选掉重复的记录,所以在表链接后会对所产生的结果集进行排序运算,删除重复的记录再返回结果。实际大部分应用中是不会产生重复的记录,最常见的是过程表与历史表UNION。如:\u003c/p\u003e\n\u003cblockquote\u003e\n\u003c/blockquote\u003e\n\u003cblockquote\u003e\n\u003cp\u003e\u003ccode\u003eselect * from gc_dfys union select * from ls_jg_dfys\u003c/code\u003e\u003c/p\u003e\u003c/blockquote\u003e\n\u003cp\u003e这个SQL在运行时先取出两个表的结果,再用排序空间进行排序删除重复的记录,最后返回结果集,如果表数据量大的话可能会导致用磁盘进行排序。\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003eMySQL中的UNION ALL\u003c/strong\u003e\n而UNION ALL只是简单的将两个结果合并后就返回。这样,如果返回的两个结果集中有重复的数据,那么返回的结果集就会包含重复的数据了。\n从效率上说,UNION ALL 要比UNION快很多,所以,如果可以确认合并的两个结果集中不包含重复的数据的话,那么就使用UNION ALL,如下:\u003c/p\u003e\n\u003cblockquote\u003e\n\u003cp\u003e\u003ccode\u003eselect * from gc_dfys union all select * from …\u003c/code\u003e\u003c/p\u003e\u003c/blockquote\u003e"
July 31, 2009
详细讲解C++ 类的继承
"\u003cp\u003e一个私有的或保护的派生类不是子类,因为非公共的派生类不能做基类能做的所有的事,就是指在公开场合,但是在类内部可以的\u003c/p\u003e\n\u003ch3 id=\"一引言\"\u003e一、引言\u003c/h3\u003e\n\u003cp\u003e在C++中,类是提供封装的逻辑单位,类的每一个对象都包含有描述其自身状态的数据集合,并且通过接收特定的消息来处理这个数据集合。如果程序设计 人员能够通过增加、修改或替换指定类的部分内容的方法对该类进行剪裁,就可以适应不同的应用,从而在很大程度上增强了数据封装的价值,而接下来要讨论的继 承就完全可以实现这种操作。\u003c/p\u003e\n\u003ch3 id=\"二与继承有关的基本概念\"\u003e二、与继承有关的基本概念\u003c/h3\u003e\n\u003cp\u003e继承是一个进程,通过继承,一个对象可以获得另一个对象的属性(包括函数),并可向其中加入属于自己的一些特征。作为C++语言的一种重要机制,用 继承的方法可以自动为一个类提供来自另一个类的操作和数据结构,进而使程序设计人员在一个一般的类的基础上很快建立一个新的类,而不必从零开始设计每个 类。\u003c/p\u003e\n\u003cp\u003e当一个类被其他的类继承时,被继承的类称为基类(可不是鸡肋^_^),又称为父类。\u003c/p\u003e\n\u003cp\u003e继承其他类属性的类称为派生类,又称为子类。\u003c/p\u003e\n\u003cp\u003e一般情况下,继承的进程起源于一个基类的定义,基类定义了其所有派生类的公有属性。从本质上讲,基类具有同一类集合中的公共属 …\u003c/p\u003e"
July 2, 2009
Mysql Master/Slave模式实战
"\u003cp\u003e**1.master上授权给slave\n** mysql\u0026gt;grant all on *.* to repadmin@’218.6.67.75′ identified by ‘backup’;\nmysql\u0026gt;flush privileges;\nmysql\u0026gt;use abs;\nmysql\u0026gt;create table mysqlslave (status char(8));\nmysql\u0026gt;insert into mysqlslave values (‘aaaa’);\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003e2.shutdown master\u003c/strong\u003e\nmysqladmin -u root shutdown\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003e3.拷贝数据文件\u003c/strong\u003e\n直接把数据文件夹打包拷贝到slave去。\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003e4.修改Master的my.cnf文件,在[mysqld]处增加\u003c/strong\u003e\nmaster /etc/my.cnf:\nlog-bin\nserver-id = 1\nsql-bin-update-same\nbinlog-do-db = abs\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003e5.修改Slave的my.cnf文件\u003c/strong\u003e\nserver-id = 2\nmaster-host = …\u003c/p\u003e"
June 27, 2009
解决Default storage engine (InnoDB) is not available导致mysql无法启动的
"\u003cp\u003e一次为了修改mysql的root用户密码,就启用了本机启动模式,可再次启用mysql时,却揭示:Default storage engine (InnoDB) is not available ,mysql无法启动,后搜索网络,得知应该是配置文件有错,这里提示:“060827 1:12:22 [ERROR] Default storage engine (InnoDB) is not available”\n打开my.ini或my.cnf文件,找到default-storage-engine这一行,把它改成default-storage-engine=MyISAM。\u003c/p\u003e"
June 26, 2009
MySQL特异功能之:Impossible WHERE noticed after reading const tables
"\u003cp\u003e用EXPLAIN看MySQL的执行计划时经常会看到Impossible WHERE noticed after reading const tables这句话,意思是说MySQL通过读取“const tables”,发现这个查询是不可能有结果输出的。比如对下面的表和数据:\u003c/p\u003e\n\u003cpre tabindex=\"0\"\u003e\u003ccode\u003e create table t (a int primary key, b int) engine = innodb;\n insert into t values(1, 1);\n insert into t values(3, 1);\n\u003c/code\u003e\u003c/pre\u003e\u003cp\u003e执行“EXPLAIN select * from t where a = 2”时就会输出“Impossible WHERE noticed after reading const tables”。\u003c/p\u003e\n\u003cp\u003e不 明白所谓的“const tables”是什么意思,对MySQL在查询优化时竟然可以发现一个查询不可能输出结果更是感觉不可思议。按数据库中“传统”的做法,查询优化时只会访 问模式定义和统计信息,而据我所知,数据库中使用的各种统计信息如EquiDepth、MaxDiff柱状图,MCV, …\u003c/p\u003e"
June 23, 2009
用mrtg监控网络设备端口流量
"\u003cp\u003e被监控设备必须支持snmp协议,因为mrtg就是通过snmp协议来获取该设备的端口流量信息。如何在一个网络设备上启用snmp协议呢?\u003c/p\u003e\n\u003cp\u003e在配置模式下执行如下命令:3550(config)#snmp-server community public ro,启用snmp协议。启用后才能使用mrtg进行监控。\u003c/p\u003e\n\u003cp\u003e我中心用一台linux服务器监控三台网络设备的流量,其服务器地址为10.66.100.100/16,三台交换机的任一VLAN地址分别为 192.168.3.253,172.19.96.2,10.70.0.1。现为了叙述方便,仅选取10网段的交换机为例进行说明。其他设备方法相同,不 再赘述。\u003c/p\u003e\n\u003cp\u003e在执行mrtg的各步操作前,linux系统中必须先安装apache服务,用于网页发布。\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003eI、Apache服务的安装\u003c/strong\u003e\u003c/p\u003e\n\u003cp\u003e因为mrtg是以网页的形式来显示被监测设备的端口流量信息的,所以必须先安装apache服务。现将安装过程中的几个问题描述如下:\u003c/p\u003e\n\u003cp\u003e下载apache-2.0.44-2.i586.rpm软件包,安装时系统显示”libssl.so.0 is needed by …\u003c/p\u003e"
June 23, 2009
使用FreeBSD的SNMP+MRTG网络流量分析
"\u003cp\u003e、 安装SNMP\n一般版本的FreeBSD系统SNMP存放在/usr/ports/net/net-snmp下面,但是有的版本不是。有些版本 在安装Package的时候,除了要安装Net之外,还要安装Net-mgmt里面的SNMP,安装好之后,SNMP就存放在/usr/ports /net-mgmt/net-snmp下面了。下面就是安装过程:\n# cd /usr/ports/net-mgmt/net-snmp #snmp的存放路径\n# make install clean #安装snmp\n# ee /etc/rc.conf\nsnmpd_enable=”YES”\nsnmpd_flags=”-p /var/run/snmpd.pid”\n# /etc/netstart\n# ee /usr/local/share/snmp/snmpd.conf\nrocommunity public\n# /usr/local/etc/rc.d/snmpd.sh start #启动snmp\u003c/p\u003e\n\u003cp\u003e2、 安装mrtg\nmrtg根据不同的版本存放的位置不同,一般存放在/usr/ports/net/net-snmp下面,这里介 …\u003c/p\u003e"
June 23, 2009
MRTG FOR WINDOWS 安装指南
"\u003cp\u003eMRTG(Multi Router Traffic Grapher),通常讲是一个监控网络链路流量负载的开源软件,它可以从所有运行SNMP协议的设备上(包括服务器、路由器、交换机等)抓取信息。事实上它不仅可以监控网络设备,任何其它的支持SNMP协议的设备都可以做为MRTG的监控对象,并自动生成包含PNG图形格式的HTML文档,通过HTTP 方式显示给用户。\u003c/p\u003e\n\u003cp\u003e官方的安装指导:http://mrtg.cs.pu.edu.tw/doc/mrtg-nt-guide.en.html\u003c/p\u003e\n\u003cp\u003e准备安装环境\u003c/p\u003e\n\u003cp\u003e安装之前,除了MRTG安装程序外,还要下载几个辅助软件。这些软件全部是免费的。\u003c/p\u003e\n\u003col\u003e\n\u003cli\u003e\n\u003cp\u003e下载MRTG\n\u003ca href=\"http://www.mrtg.org\"\u003ehttp://www.mrtg.org\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e下载ActivePerl\n\u003ca href=\"http://www.activestate.com/Products/Download/Download.plex?id=ActivePerl\"\u003ehttp://www.activestate.com/Products/Download/Download.plex?id=ActivePerl\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e下载Windows服务安装工具:SERANY.exe 和 INSTSRV.exe\n\u003ca href=\"http://www.electrasoft.com/srvany/srvany.htm\"\u003ehttp://www.electrasoft.com/srvany/srvany.htm\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ol\u003e\n\u003cp\u003e安装MRTG\u003c/p\u003e\n\u003cp\u003e …\u003c/p\u003e"
June 23, 2009
mysqlbinlog:用于处理二进制日志文件的实用工具
"\u003ch2 id=\"服务器生成的二进制日志文件写成二进制格式要想检查这些文本格式的文件应使用mysqlbinlog实用工具\"\u003e服务器生成的二进制日志文件写成二进制格式。要想检查这些文本格式的文件,应使用mysqlbinlog实用工具。\u003c/h2\u003e\n\u003cp\u003e应这样调用mysqlbinlog:shell\u0026gt; \u003cstrong\u003emysqlbinlog [options] \u003cem\u003elog-files\u003c/em\u003e…\u003c/strong\u003e\u003c/p\u003e\n\u003cp\u003e例如,要想显示二进制日志binlog.000003的内容,使用下面的命令:\u003c/p\u003e\n\u003cpre tabindex=\"0\"\u003e\u003ccode\u003eshell\u0026gt; mysqlbinlog binlog.0000003\n\u003c/code\u003e\u003c/pre\u003e\u003cp\u003e输出包括在binlog.000003中包含的所有语句,以及其它信息例如每个语句花费的时间、客户发出的线程ID、发出线程时的时间戳等等。\u003c/p\u003e\n\u003cp\u003e通常情况,可以使用\u003cstrong\u003emysqlbinlog\u003c/strong\u003e直接读取二进制日志文件并将它们用于本地MySQL服务器。也可以使用–read-from-remote-server选项从远程服务器读取二进制日志。\u003c/p\u003e\n\u003cp\u003e当读取远程二进制日志时,可以通过连接参数选项来指示如何连接服务器,但它们经常被忽略掉,除非你还指定了–read-from-remote-server选项。这些选项是–host、–password、–port、–protocol、–socket和–user。\u003c/p\u003e\n\u003cp\u003e还可以使用\u003cstrong\u003emysqlbinlog\u003c/strong\u003e来读取 …\u003c/p\u003e"
June 23, 2009
MYSQL慢速(SLOW LOG)脚本分析
"\u003cp\u003emysql有一个功能就是可以log下来运行的比较慢的sql语句,默认是没有这个log的,为了开启这个功能,\n要修改my.cnf或者在mysql启动的时候加入一些参数。如果在my.cnf(Windows为my.ini文件)里面修改,需增加如下几行\u003c/p\u003e\n\u003cp\u003e`long_query_time = 1\u003c/p\u003e\n\u003cp\u003elog-slow-queries = /var/youpath/slow.log\u003c/p\u003e\n\u003cp\u003elog-queries-not-using-indexes`\u003c/p\u003e\n\u003cp\u003elong_query_time 是指执行超过多久的sql会被log下来,这里是1秒。\nlog-slow-queries 设置把日志写在那里,可以为空,系统会给一个缺省的文件host_name-slow.log,\nlog-queries-not-using-indexes 就是字面意思,log下来没有使用索引的query。\u003c/p\u003e\n\u003cp\u003emysql有以下几种日志:\n\u003cstrong\u003e错误日志: -log-err\n查询日志: -log\n慢查询日志: -log-slow-queries\n更新日志: -log-update\n二进制日志: -log-bin\u003c/strong\u003e\u003c/p\u003e\n\u003cp\u003e把上述参数打开,运 …\u003c/p\u003e"
June 21, 2009
Nginx常见应用技术-Tips
"\u003cp\u003e目 录\u003c/p\u003e\n\u003cp\u003e一、 Nginx 基础知识\u003c/p\u003e\n\u003cp\u003e二、 Nginx 安装及调试\u003c/p\u003e\n\u003cp\u003e三、 Nginx Rewrite\u003c/p\u003e\n\u003cp\u003e四、 Nginx Redirect\u003c/p\u003e\n\u003cp\u003e五、 Nginx 目录自动加斜线:\u003c/p\u003e\n\u003cp\u003e六、 Nginx Location\u003c/p\u003e\n\u003cp\u003e七、 Nginx expires\u003c/p\u003e\n\u003cp\u003e八、 Nginx 防盗链\u003c/p\u003e\n\u003cp\u003e九、 Nginx 访问控制\u003c/p\u003e\n\u003cp\u003e十、 Nginx 日志处理\u003c/p\u003e\n\u003cp\u003e十一、 Nginx Cache\u003c/p\u003e\n\u003cp\u003e十二、 Nginx 负载均衡\u003c/p\u003e\n\u003cp\u003e十三、 Nginx 简单优化\u003c/p\u003e\n\u003cp\u003e十四、 如何构建高性能的 LEMP 环境\u003c/p\u003e\n\u003cp\u003e十五、 Nginx 服务监控\u003c/p\u003e\n\u003cp\u003e十六、 常见问题与错误处理.\u003c/p\u003e\n\u003cp\u003e十七、 相关资源下载\u003c/p\u003e\n\u003cp\u003e作者:NetSeek\u003c/p\u003e\n\u003cp\u003e欢迎转载,转载时请务必以超链接形式标明文章原始出处和作者信息及本声明.\u003c/p\u003e\n\u003cp\u003e首发时间: 2008-11-25\u003c/p\u003e\n\u003cp\u003e转帖NetSeek的Nginx Tips 希望对广大Cuer有用!\u003c/p\u003e\n\u003cp\u003e附件pdf: \u003ca href=\"/wp-content/uploads/2009/06/20090615_5e83f7a0addbb093df4fjp2nchwhwggc.pdf\"\u003eNginx常见应用技术-Tips.pdf\u003c/a\u003e\u003c/p\u003e"
June 19, 2009
详细讲解MySQL数据库双机热备的配置方法
"\u003cp\u003eMySQL数据库双机热备的配置方法:\u003c/p\u003e\n\u003cp\u003e◆1.MySQL数据库没有增量备份的机制,当数据量太大的时候备份是一个很大的问题。还好MySQL数据库提供了一种主从备份的机制,其实就是把主数据库的所有的数据同时写到备份数据库中。实现MySQL数据库的热备份。\u003c/p\u003e\n\u003cp\u003e◆2.要想实现双机的热备首先要了解主从数据库服务器的版本的需求。要实现热备MySQL的版本都要高于3.2,还有一个基本的原则就是作为从数据库的数据库版本可以高于主服务器数据库的版本,但是不可以低于主服务器的数据库版本。\u003c/p\u003e\n\u003cp\u003e◆3.设置主数据库服务器:\u003c/p\u003e\n\u003cp\u003e·a.首先查看主服务器的版本是否是支持热备的版本。然后查看my.cnf(类 unix)或者my.ini(windows)中mysqld配置块的配置有没有log-bin(记录数据库更改日志),因为MySQL的复制机制是基于 日志的复制机制,所以主服务器一定要支持更改日志才行。然后设置要写入日志的数据库或者不要写入日志的数据库。这样只有您感兴趣的数据库的更改才写入到数 据库的日志中。\u003c/p\u003e\n\u003cp\u003eserver-id=1 //数据库的id这个应该默认是1就不用改动\u003c/p\u003e\n\u003cp\u003elog-bin=log_name //日志文件的名 …\u003c/p\u003e"
June 18, 2009
Changed limits: max_open_files: 2048 max_connections: 1024 table_cache: 507
"\u003cp\u003eChanged limits: max_open_files: 2048 max_connections: 1024 table_cache: 507\u003c/p\u003e\n\u003cp\u003e这个问题怎么解决啊!\u003c/p\u003e\n\u003cp\u003e在windows下安装Mysql系统日志出现 max_open_files: 2048 max_connections: 510 table_cache: 764 类似错误是因为 \u003cstrong\u003emax_connections\u003c/strong\u003e 最大连接数和\u003cstrong\u003emax_open_files\u003c/strong\u003e、\u003cstrong\u003etable_cache\u003c/strong\u003e 不匹配。适当的降低max_connections 或调整其他两个数值\n解决办法在 mysql bin \u0026gt; 中输入\nmysql-nt –table_cache=764\nmysql-nt –innodb_open_files=2048 即可!!\u003c/p\u003e\n\u003cp\u003etable_cache和max_connections 在my.ini 里可调\u003c/p\u003e\n\u003cp\u003eChanged limits:\nmax_open_files: 2048\nmax_connections: 1024\ntable_cache: 507\u003c/p\u003e\n\u003cp\u003emax_connections=1024 …\u003c/p\u003e"
June 18, 2009
MySql Query Cache 查询缓存介绍(1)
"\u003cp\u003eMySql Query Cache 和 Oracle Query Cache 是不同的, Oracle Query Cache 是缓存执行计划的,而MySql Query Cache 不缓存执行计划而是整个结果集。缓存整个结果集的好处不言而喻,但由于缓存的是结果集因此Query必须是完全一样的,这样带来的后果就是平均 Hit Rate 命中率一般不会太高。 Query Cache 对于一些小型应用程序或者数据表的数据量不大的情况下效果是最为明显的。\u003c/p\u003e\n\u003cp\u003e作为一个新的特性,MySql Query Cache 有什么特典和局限呢? 咱一个一个来说:\u003c/p\u003e\n\u003cp\u003e1、Cache 机制对应用程序是透明的。在应用程序中只是改变查询语句的语义,也能得到缓存中的查询结果集。如果你没有使用 query_cache_wlock_invalidate=ON 来提示MySql 锁表将要进行写操作,那么此时的查询即使表在锁Lock状态下或者预备更新的状态下,仍然可以从缓存中获得结果集;\u003c/p\u003e\n\u003cp\u003e2、只缓存整个查询结果集,即对子查询,内联视图和部分UNION的查询是不缓存的;\u003c/p\u003e\n\u003cp\u003e3、缓存机制工作在Packet 级别,第二项的只缓存 …\u003c/p\u003e"