MySQL性能优化的简单说明

MySQL 作为 LAMP 组件中的重要一环,在网站架构中担当关于数据处理的重任。作为目前流行最为广泛的开源数据库,网络上已经有相当多的各种优化教程。本文将试着从改善 MySQL 配置入手,进一步提升 MySQL 的性能。 关于如何优化数据库结构及 SQL 语句不在本次讨论范围之内。 MySQL 性能优化分为三个部分,一是物理硬件的优化,二是 MySQL 安装时的编译优化,三是 MySQL 的配置文件 my.cnf 的优化。 一、物理硬件的优化 磁盘 I/O 是制约 MySQL 性能的最大因素之一。 采用 SSD 的服务器肯定会比普通 HDD 硬盘性能要好;采用 RAID10 的肯定要比单盘的性能要好。 所谓物理硬件的优化,其实也就是服务器(VPS)硬件的堆砌。更多的内存,更快的磁盘,更强的 CPU 无疑就是最佳的。 二、MySQL 安装时的编译优化 一般情况下不建议直接 yum 安装 MySQL ,一来不能定制功能,二来版本比较老。所以一般会采取编译安装的方式。 源码编译安装的前提条件(依赖包): 1、CMake。官网:http://www.cmake.org/ 2、GCC,A working ANSI C++ compiler. GCC 4.2.1 or later。官网:http://www.gnu.org/software/gcc/ 3、bison,2.1 or newer。官网:http://www.gnu.org/software/bison/ 4、m4。官网:http://www.gnu.org/software/m4/ 5、tar。官网:http://www.gnu.org/software/tar/ 编译参数: MySQL 5.5.x http://dev.mysql.com/doc/refman/5.5/en/source-configuration-options.html MySQL 5.6.x http://dev.mysql.com/doc/refman/5.6/en/source-configuration-options.html LAMP 一键安装脚本里对 MySQL 编译的参数如下: -DCMAKE_INSTALL_PREFIX=/usr/local/mysql -DMYSQL_UNIX_ADDR=/tmp/mysql.sock -DDEFAULT_CHARSET=utf8 -DDEFAULT_COLLATION=utf8_general_ci -DWITH_EXTRA_CHARSETS=complex -DWITH_INNOBASE_STORAGE_ENGINE=1 -DWITH_READLINE=1 -DENABLED_LOCAL_INFILE=1 -DWITH_PARTITION_STORAGE_ENGINE=1 -DWITH_FEDERATED_STORAGE_ENGINE=1 -DWITH_BLACKHOLE_STORAGE_ENGINE=1 -DWITH_MYISAM_STORAGE_ENGINE=1 -DWITH_EMBEDDED_SERVER=1 ...

July 16, 2015

CentOS下安装pure-ftpd

安装pure-ftpd 1.下载 wget http://download.pureftpd.org/pub/pure-ftpd/releases/pure-ftpd-1.0.32.tar.gz 2.解压 tar -zxvf pure-ftpd-1.0.32.tar.gz 3.编译安装 tar -zxvf pure-ftpd-1.0.32.tar.gz cd pure-ftpd-1.0.32 ./configure \ –prefix=/usr/local/pureftpd \ –without-inetd \ –with-altlog \ –with-puredb \ –with-throttling \ –with-peruserlimits \ –with-tls make && make install 配置 pure-ftpd 1. 修改配置 cd configuration-file mkdir -p /usr/local/pureftpd/etc/ cp pure-ftpd.conf /usr/local/pureftpd/etc/pure-ftpd.conf cp pure-config.pl /usr/local/pureftpd/sbin/pure-config.pl chmod 755 /usr/local/pureftpd/sbin/pure-config.pl 2.配置文件 vi /usr/local/pureftpd/etc/pure-ftpd.conf //修改其中两处: PureDB /usr/local/pureftpd/etc/pureftpd.pdb PIDFile /usr/local/pureftpd/var/run/pure-ftpd.pid 启动pure-ftpd /usr/local/pureftpd/sbin/pure-config.pl /usr/local/pureftpd/etc/pure-ftpd.conf Running: /usr/local/pureftpd/sbin/pure-ftpd -A -c50 -B -C8 -D -fftp -H -I15 -lpuredb:/usr/local/pureftpd/etc/pureftpd.pdb -L3136:8 -m4 -s -U133:022 -u100 -g/usr/local/pureftpd/var/run/pure-ftpd.pid -k99 -Z //显示这个就没问题了。 ...

January 5, 2015

Nginx0.8.x+PHP5.2.13(FastCGI)搭建高性能Web服务器

Nginx (“engine x”) 是一个高性能的 HTTP 和反向代理服务器,也是一个 IMAP/POP3/SMTP 代理服务器。 Nginx 是由 Igor Sysoev 为俄罗斯访问量第二的 Rambler.ru 站点开发的,它已经在该站点运行超过三年了。Igor 将源代码以类BSD许可证的形式发布。 Nginx 超越 Apache 的高性能和稳定性,使得国内使用 Nginx 作为 Web 服务器的网站也越来越多,其中包括新浪博客、新浪播客、网易新闻、腾讯网、搜狐博客等门户网站频道,六间房、56.com等视频分享网站,Discuz!官方论坛、水木社区等知名论坛,盛大在线、金山逍遥网等网络游戏网站,豆瓣、人人网、YUPOO相册、金山爱词霸、迅雷在线等新兴Web 2.0网站。 Nginx 的官方中文维基:http://wiki.nginx.org/NginxChs 在高并发连接的情况下,Nginx是Apache服务器不错的替代品。Nginx同时也可以作为7层负载均衡服务器来使用。根据我的测试结果,Nginx 0.8.46 + PHP 5.2.14 (FastCGI) 可以承受3万以上的并发连接数,相当于同等环境下Apache的10倍。 两台Nginx + PHP5(FastCGI)服务器,跑多个一般复杂的纯PHP动态程序,单台Nginx + PHP5(FastCGI)服务器跑PHP动态程序的处理能力已经超过“700次请求/秒”,相当于每天可以承受6000万(700*60*60*24=60480000)的访问量(更多信息见此),而服务器的系统负载也不高。 为什么Nginx的性能要比Apache高得多?这得益于Nginx使用了最新的epoll(Linux 2.6内核)和kqueue(freebsd)网络I/O模型,而Apache则使用的是传统的select模型。目前Linux下能够承受高并发访问的Squid、Memcached都采用的是epoll网络I/O模型。 处理大量的连接的读写,Apache所采用的select网络I/O模型非常低效。下面用一个比喻来解析Apache采用的select模型和Nginx采用的epoll模型进行之间的区别: 假设你在大学读书,住的宿舍楼有很多间房间,你的朋友要来找你。select版宿管大妈就会带着你的朋友挨个房间去找,直到找到你为止。而epoll版宿管大妈会先记下每位同学的房间号,你的朋友来时,只需告诉你的朋友你住在哪个房间即可,不用亲自带着你的朋友满大楼找人。如果来了10000个人,都要找自己住这栋楼的同学时,select版和epoll版宿管大妈,谁的效率更高,不言自明。同理,在高并发服务器中,轮询I/O是最耗时间的操作之一,select和epoll的性能谁的性能更高,同样十分明了。 安装步骤: (系统要求:Linux 2.6+ 内核,本文中的Linux操作系统为CentOS 5.3,另在RedHat AS4上也安装成功) 一、获取相关开源程序: 1、【适用CentOS操作系统】利用CentOS Linux系统自带的yum命令安装、升级所需的程序库(RedHat等其他Linux发行版可从安装光盘中找到这些程序库的RPM包,进行安装): sudo -s LANG=C yum -y install gcc gcc-c++ autoconf libjpeg libjpeg-devel libpng libpng-devel freetype freetype-devel libxml2 libxml2-devel zlib zlib-devel glibc glibc-devel glib2 glib2-devel bzip2 bzip2-devel ncurses ncurses-devel curl curl-devel e2fsprogs e2fsprogs-devel krb5 krb5-devel libidn libidn-devel openssl openssl-devel openldap openldap-devel nss_ldap openldap-clients openldap-servers 2、【适用RedHat操作系统】RedHat等其他Linux发行版可从安装光盘中找到这些程序库的RPM包(事先可通过类似“rpm -qa | grep libjpeg”的命令查看所需的RPM包是否存在,通常是“xxx-devel”不存在,需要安装)。RedHat可以直接利用CentOS的RPM包安装,以下是RPM包下载网址: ①、RedHat AS4 & CentOS 4 http://mirrors.163.com/centos/4/os/i386/CentOS/RPMS/ http://mirrors.163.com/centos/4/os/x86_64/CentOS/RPMS/ ...

January 4, 2015

终于决定了,将业余的大部分时间投入给C#开源世界

昨天.NET已经宣布正式开源,而我的信念更加坚定了:将业余的大部分时间投入给C#开源世界。 之前一直诟病于C#和.NET只属于微软的产品,现在完全不一样了,我自己的下一步计划: 一、学习计划 1、重新把前几年的项目进行一次全面梳理,把核心和精华的部分留下; 2、重新全面系统完整地把最新的.NET框架学习一边,并且结合大的开源项目研究,目标是基于国外开源系统改造出非常好用的系统; 3、将手头上关于.NET和C#的图书做一遍梳理,包括电子版的; 4、持续跟进最新的关于Mono和.NET开源方面的资讯; 二、工作计划 1、将目前公司的项目做好梳理、未未来的跨平台打好基础; 2、专心研究nopcommerce(电商)项目,并且基于它搭建一个云、端、移动app、网店一体化的电商项目(时间可能会很长),这个项目会为未来二次开源做准备; 3、专心研究CSLA .NET,这个是.NET的一个典范,而且包含了所有平台的样例,这是跨平台的先驱; 4、专心研究Orchard(cms)项目,并且基于它搭建一个云、端、移动app的公司企业网站系统,这个项目也会为未来开源做准备。 将慢慢地把cms和电商项目融入公司,打造一支技术能力强的团队。

November 14, 2014

微软正式MIT协议将开源.NET框

今天是C#程序员狂欢的日子,这真的是一门非常非常优雅的很棒的编程语言。 “Scott Guthrie宣布微软正式将开源.NET框架,使用MIT协议开源,让它在Linux和OS X系统上也能够运行。开发商们将能够在全球三个最大的操作系统上使用.NET框架了。” 这将是计算机软件行业载入史册的一天,.NET平台终于兑现它对世界的承诺,全面支持所有平台,我坚信这是安德鲁和mono老大的英明推动下、当然也是在时代的发展驱动下的结果,太棒了!

November 13, 2014

快讯:Xamarin公司与微软达成全面合作,将捆绑vs2013

早上收到Xamarin的邮件,他们在纽约时间2013年11月13日上午宣布Xamarin将加入到VS2013(而且肯定是内置),让开发者使用C#语言高效开发优雅的ios和android的应用,届时还将给MSDN的订阅者们提供相关专题内容,太棒了! 这是mono老大Miguel de Icaza(米格尔·德伊卡萨)http://t.cn/8Dkw4qt 在twitter上的留言,他认为今天对于C#和F#是一个伟大的日子,估计Xamarin这两年过来的艰辛只有他们团队自己知道。 最后,恭喜Xamarin,恭喜Mono老大,这将是写入C#发展史的一件大事。

November 15, 2013

记录从google play商店购买nexus 5全过程,使用风雷转运

Google是我最喜欢的公司之一,最开始入手android手机的时候(2010年)就考虑过google的nexus系列,但是当时对海淘、转运都不了解,加上国内市场的水货价格不菲、质量不敢保证,一直没有购买。 这段时间我用了一年多的小米1代频繁重启,小米客服又不搭理人,检修就要收费,作为第一代“米粉”(当年第一批机子的人),深受打击,并立志对于这类型的产品,坚决购买进口。 前些日子就考虑入手nexus 5,做了一些准备,比如但没有做充足,而且这两天自己的客户端产品要发布,根本没有时间留意nexus 5发布时间。早应该想到google会在万圣节的时候发布手机的。不过没有关系,反正我也不着急使用。 11月1日,因为没有做好准备,所以还有些纠结,幸亏之前对转运公司做了一些调查,赶紧在**风雷** 注册了一个帐号,这里有一个链接地址,注册可以送20块钱,点击注册 ,记得不要把推荐人id去掉,否则不会送,我就因为这样所以没有送20块钱,后悔啊…第一次从米国转运,希望风雷不要掉链子… 11月2日,在google play上下单购买,用master的信用卡,下单过程木有任何问题,google显示要3到4周发货; 11月3日… 等等等… 11月11日,双11晚上,信用卡通知有消费,看金额是google,第一反应是google发货了,赶紧爬起来查看订单状态,发现还是“待处理”; 11月12日,上午来到公司后,收到email,google已经发货,正在送往–美国俄勒冈免税州,太棒了,看来这次google不缺货; 11月13日,货物已经从肯塔基州发出; 11月14日… 11月15日,上午到Spokane, WA, United States了,离目的地很近了 11月15日,下午到达俄勒冈,希望早点到CA发货 11月16日… 等等等 11月24日上午9点,在去石景山的公交车上,我连接中移动的wifi,收到风雷的邮件已入库,待发货,爽!看来从俄勒冈到加利福尼亚确实需要5个工作日啊!另外,风雷确实按1.3磅算了!只能说:这是他们的生存之道-_- 11月25日,问风雷客服,说今天能发货。 11月26日上午9点,收到风雷的邮件:已发货!希望快点,本周就到达北京啊!!! 11月27日,等… 11月28日,感恩节,我开始怀疑美国那边是不是快递放假了? 11月29日,还是没有看到更新… 11月30日,上午看到已经到达北京,正在清关,usps确实快啊! 12月2日,查看ems跟踪快递,已经送达北京海关处理中心,希望赶紧处理好让我去拿吧,反正基本会税-_- 12月3日,上午查看ems,昨天下班的时候已经到达双榆树,午饭前立马赶过去取,如当初所预料,纳税200元,“税税”平安-_- 回到家,激动地开箱,确实非常激动!google是我最爱的公司,木有之一,“鸡婆”一下我的开箱照,嘿嘿~ step1:这个是风雷做了包裹处理了,外加一个盒子,就多了0.2磅-_- step2:打开,看到google寄往俄勒冈的信息 step3:看到google字样很兴奋!这是账单。 step4:特写一下,用了google那么多年的网上服务,这是第一次拿到google的实体物品,happy step5:最后来一张合影 海淘是一项冒险,等待的过程很好玩,拿到货的那一刻很high!

November 2, 2013

如何在github上传自己的代码

注册GitHub后你就会有0.3G的免费空间,不过只能创建公开项目,这也满足代码分享的目的,我最喜欢的倒是它的代码展示方式,可以直接浏览你的代码,代码是经过高亮、添加行号处理过的,十分漂亮,体验一流,比如这个Webpy托管的地方。而作为想要了解你代码的人,可以选择直接在线浏览自己感兴趣的,也可以直接下载压缩包,或者直接使用Git clone到本地。 因为GitHub是基于Git版本控制系统,所以你上传修改代码什么的,都需要使用Git工具。我这里主要是用来分享和展示代码,所以不想在版本控制方面做过多的阐述,下面就简单讲解一下怎么在GitHub上新建一个项目,还有把自己的代码传上去。下面的前提是你已经注册了GitHub和下载安装了Git——Git下载、Windows版本下载。 上传分享代码 1.在GitHub上建立项目 登录GitHub后,你可以在右边靠中那里找到一个按钮“New Repository”,点击过后,填入项目名称、说明和网址过后就可以创建了,然后会出现一个提示页面,记下类似[email protected]:XXX/XXX.git的地址,这个就是你这个项目的地址了。 2.配置Git以及上传代码 安装Git成功后,如果是Windows下,选择Git Bash,在命令行中完成一切,可能开始有点麻烦,不过就那几条命令行,用几次就记住啦。首先初始设置Git: 1 git config --global user.name "Your Real Name" 2 git config --global user.email [email protected] 然后开始进行最麻烦的一步了,你需要上传文件到GitHub的Git系统上,得需要一个SSH密匙来认证,下面就开始生成密钥和提交密钥。打开Git Bash,创建SSH key: 1 ssh-keygen -C '[email protected]' -t rsa 然后要你输入SSH密匙的存放位置,可以不管,直接回车使用默认路径。再输入你想要的密码,SSH key就生成了。现在你需要将这个Key提交到GitHub,首先打开Key保存的位置,里面会有三个文件,找到id_rsa.pub,用文本编辑器打开,复制里面的全部字符。到GitHub,在右上方工具栏里找到Account Settings。在这个页面上有一个SSH Public Keys标签,选择Add another public key。Title可以随便填一个,Key就粘贴刚才的字符,提交。 完成这些工作后,就可以上传自己的代码了。找到自己要分享上传的代码文件夹,右击选择Git Bash,或者在Git Bash中进入这个文件夹。建立一个仓库: 1 git init 选择要添加进仓库的文件: 1 git add . 一般如果你想分享这个文件夹里的所有代码,就在 add后面加“.”,上面的例子就是这样,如果传指定的,只需要把“.”改为文件名即可,现在只是选择了要加入仓库的文件,下面才是添加进入仓库: 1 git commit -m 'Test' -m后面跟一个参数,表示说明,将代码提交到GitHub后,将会在代码文件信息上显示这个说明,如下图标记的地方。 搞了这么久,现在才开始把本地仓库上传到GitHub了,下面两行命令搞定问题: 1 2 git remote add origin [email protected]:XXX/XXX.git 3 git push -u origin master 这个[email protected]:XXX/XXX.git就是上面创建项目是生成的地址。现在打开你的项目网址,你就可以发现你的代码已经展示出来了。如果你要更新代码的话,就重复上面的吧。 如果提交了敏感信息,比如代码中设置的自己的密码什么的忘删除就上传上去了怎么办?重新修改过后上传依然有历史记录,而使用Git删除历史记录貌似很麻烦,于是就采用删除项目吧,删除了再重新上传。删除项目需要在GitHub网站上右上方找到admin按钮,进去后右边最下面有个删除的按钮,这样就可以删除了。 ...

October 8, 2013

北京购房指南:关于首付款、购房合同、提取公积金、贷款

今年7月12日我们在北京购房了一套商品房,做为北漂一族,而且大部分资金靠自己打工所得,所以资金并不是非常充裕。如果期间懂得门道的话,或者可以早点下手买房。现在把经验贴出来,如果有缘人看到,希望能从中得到帮助。 1、首付款:如果购买的是商品房,那么首付多少你就得准备多少首付款;如果是保障房,你可以用公积金充当首付。目前北京市实行限购,所以交完定金(定金可以充当首付款)后,建委那边需要进行长达至少15个工作日的审核。交首付的时间一般是在交完定金后的1个月左右。 2、购房合同:购房合同是交首付的时候签的,一式四份,但如果你是贷款购房,在你没有换完房贷之前,你是拿不到合同的(抵押在银行)。一般来说,签订合同后,在两周内应该是可以拿到合同的,如果你着急要购房合同就去催开发商(这个会关系到你取公积金的时间,特别是那些刷信用卡付首付的人)。 3、提取公积金:北京提取公积金相对来说还是比较方便的。如果是商业贷款,那么可以在拿到首付款发票(交完首付就可以拿到)和购房合同后,就可以去办理提取,周一到周五都可以办理,办理后3到5个工作日内基本就到了(这里注意了:如果着急提取还信用卡,那么就催人事去办理,拿到合同就催他们去办理,如果不催,他们每个月都是20号左右才去公积金处);如果是公积金贷款,那只能是在办理完公积金贷款后提取了。 关于商业贷款是可以用首付款发票和购房合同提取公积金的,公积金电话咨询中心可能会告诉你不行,但是我确认目前肯定是可以的,这里还有一篇文章 是专门报道这个问题的。 4、贷款:如果贷款额度超过住房公积金贷款上限,并且银行可以打85折甚至更低,建议走纯商业贷款,这样会省很多心;如果低于上限,当然可以走住房公积金贷款。另外,开发商会说贷款不下来收违约金,其实这个倒不是大问题,目前来看没有发现收违约金的。 通过这几点的分析,如果公积金足够多,在做了精打细算后,完全可以刷信用卡付首付(金额不要超过公积金),买完房子后立刻提取公积金还信用卡。当然,最坏情况也是信用卡分期,第二个月全部偿还。

August 18, 2013

《基于Mono for android移动开发》ppt讲座

这是我们团队内部关于Mono for android讲座的ppt,写得一般,不过能点出一些开发过程中的要害。 下载地址:基于Mono for android移动开发

August 9, 2013