轻量级VPS优化MySQL内存占用

自从BuyVM发起低价VPS的浪潮,各家IDC的低价VPS如雨后春笋.

阿亮目前使用的是YardVPS $3.5/月 的套餐 256内存/突发512.刚买时非常不错,可惜现在火了,超卖情况严重.ping时很畅通,响应却慢多了.

不管你是用LAMP,LNMP,LLMP,mysql总是无法避免的.

以Debian5 mysql5.0的默认配置,冷启动立即占用100多M的内存.对我们这种小内存VPS真是灾难呐.

阿亮看了这篇blog,发现原来优化mysql其实很简单

备份当前配置
mv my.cnf my.cnf.bak
Debian或Ubuntu系统,可以直接复制/us/usr/share/doc/mysql-server-5.0/examples/my-small.cnf 到 /etc/mysql/ 改名为my.cnf

编辑my.cnf? 去掉skip-bdb前的 # 并添加 skip-innodb
# Uncomment the following if you are NOT using BDB tables
skip-bdb
# Uncomment the following if you are using InnoDB tables
skip-innodb

重启mysql 内存占用立即减少100M

主要是禁用了innodb引擎,目前我没有事务安全的需求,所以不需要使用innodb引擎.

如果是Centos等其他系统,可以下载我的这份配置my.cnf

 

原创文章,转载请注明: 转载自贝壳博客

本文链接地址: 轻量级VPS优化MySQL内存占用

在LiteSpeed中添加虚拟主机

LiteSpeed 吸引人的地方当然还有强大的web管理控制台,添加虚拟主机也是非常的方便。

  1. Configuration -> Virtual Hosts ->Add
  2. Virtual Host Name 这个随便设置
    Virtual Host Root  主机的根目录
    Config File 配置文件的存放地址,可以使用 $VH_ROOT/vconfig.xml 及当前虚拟主机目录下的 vconfig.xml 可以事先创建,也可以填好后待会儿让litespeed创建,但要保证上级目录可写
    Enable Scripts/ExtApps 勾选 yes
    Restrained 勾选 yes
    save后再进入刚才添加到主机,编辑 General  在Document Root处填上 web文档目录

  3. Configuration ->Listeners    选 View/Edit
    在 Virtual Host Mappings  添加一个映射
    Virtual Host 选刚才新建的主机名
    Domains 输入绑定的域名,多个域名 用 ‘,’隔开。支持*, ? 的泛域名绑定
  4. Actions -> Graceful Restart 重启 即可生效

原创文章,转载请注明: 转载自贝壳博客

本文链接地址: 在LiteSpeed中添加虚拟主机

LiteSpeed 开启 .htaccess rewrite 及其他功能

LiteSpeed 一大优势当然是支持 Apache .htaccess 重写,相当给力。

如果你还没有安装,那么可以看上一篇中的安装配置教程。

默认安装后是没有开启rewrite功能的,开启的方法是这样

进入后台管理页面 Configuration ->Server

HT Access 这一栏中点 Edit 勾选FileInfo 这个选项 点Save 然后重启就OK了。

  1. When Limit is checked, directives “Order”, “Allow from” and “Deny from” are allowed.
    当 Limit选项被选中,”Order”, “Allow from” and “Deny from” 这些指令将被允许使用。

  2. When Auth is checked, directives “AuthGroupFile”, “AuthName”, “AuthType”, “AuthUserFile”, “Require” are allowed.
    当 Auth 选项被选中 ,”AuthGroupFile”, “AuthName”, “AuthType”, “AuthUserFile”, “Require” 这些指令将被允许使用。主要用于做身份验证。
  3. When FileInfo is checked, directives “Satisfy”, AddDefaultCharset”, “AddType”, “DefaultType”, “ForceType”, “ExpiresActive”, “ExpiresDefault”, “ExpiresByType”, “Redirect”, “RedirectTemp”, “RedirectPermanent”, “RewriteEngine”, “RewriteOptions”, “RewriteBase”, “RewriteCond” and “RewriteRule” are allowed
    FileInfo 选项被选中,^^^^ 允许重写命令
  4. When Indexes is checked, directive “DirectoryIndex” is allowed
  5. When Options is checked, directive “Options” is allowed

原创文章,转载请注明: 转载自贝壳博客

本文链接地址: LiteSpeed 开启 .htaccess rewrite 及其他功能

在Debian 中安装 Litespeed (第一次修订)

重装了VPS,选用debian?6 32bit 安装免费版的 Litespeed 。

  1. 安装编译所需的程序以及mysql server 5.1
    apt-get install patch make gcc g++ autoconf2.13 libxml2-dev mysql-server zlib-bin zlib1g-dev libjpeg62-dev libpng12-dev libmysql++-dev mcrypt curl libcurl4-openssl-dev libmcrypt-dev libmhash-dev libfreetype6-devexport PHP_AUTOCONF=/usr/bin/autoconf-2.13
    export PHP_AUTOHEADER=/usr/bin/autoheader-2.13
    只有用2.13版的autoconf才能正确编译php,否则会出错
  2. 下载编译 linux x86版 Litespeed
    wget http://www.litespeedtech.com/packages/4.0/lsws-4.0.20-std-i386-linux.tar.gz
    tar xvf lsws-4.0.20-std-i386-linux.tar.gz
    cd lsws-4.0.20
    ./install.sh

    1. 出现许可协议按空格键,然后输入Yes接受协议:Do you agree with abot license ? 输入 Yes
    2. 询问LiteSpeed安装路径?可直接回车默认Destination [/usr/local/lsws]:
    3. 管理员用户名,回车使用默认adminUser name [admin]:接着输入两次管理员密码
    4. 管理员邮箱,如果回车使用默认:Email address [root@localhost]:
    5. LiteSpeed用户及组,回车使用默认即可:User [nobody]:Group [nogroup]:
    6. web服务端口,网站服务为80HTTP PORT [8088]:80
    7. 管理程序服务端口,默认为7080,直接回车即可Admin HTTP port [7080]:
    8. 是否安装phpSetup up PHP [Y/n]:Y
    9. 是否安装AWSatas ? NWould you like to install AWStats Add-on module [y/N]?N
    10. 是否设置litespeed为开机自动启动,YWould you lite to have LiteSpeed Web Server started automaticallywhen the server restarts [Y/n]?
    11. 安装完成后,是否启动,Y[OK] The startup script has been successfully installed!Would you like to start it right now [Y/n]?

    接着Litespeed成功运行

  3. 编译php进入管理后台 http://youdomain:7080 用刚才设置的帐号密码登入
    1. 在管理菜单选择 Actions->Compile PHP
    2. php5版本 选 5.3.5 Next
    3. Configure Parameters中,输入
      ‘–with-mysql’ ‘–with-mysqli’ ‘–with-zlib’ ‘–with-gd’ ‘–enable-shmop’ ‘–enable-track-vars’ ‘–enable-sockets’ ‘–enable-sysvsem’ ‘–enable-sysvshm’ ‘–enable-magic-quotes’ ‘–enable-mbstring’ ‘–with-iconv’ ‘–with-litespeed’ ‘–enable-inline-optimization’ ‘–with-curl’ ‘–with-curlwrappers’ ‘–with-mcrypt’ ‘–with-mhash’ ‘–with-mime-magic’ ‘–with-openssl’ ‘–with-freetype-dir=/usr/lib’ ‘–with-jpeg-dir=/usr/lib’Add-on Modules 看需要勾选,这里我编译了APC,当前版本为3.1.16
      点 build PHP 5.3.5
      下一步会在后台下载所需源代码,解压,打补丁。不要刷新,静静等待出现Next
    4. 会给您一行代码,您需要在ssh里面运行:
      /usr/local/lsws/phpbuild/buildphp_manual_run.sh
      慢慢等待,如果不缺少头文件或库文件的话,会顺利编译通过
      Detailed Log:最后出现 **COMPLETE** 的时候 表示编译完成
      如果没有成功,也在Detailed Log: 中寻找问题,一般来说编译不成功都是缺少依赖文件。
      实在找不到的时候,可以google或给我留言
    5. 管理菜单中,选择Actions->Graceful Restart,来重启web服务
    6. 访问http://youdomain/phpinfo.php成功的话将会列出php信息
  4. 安装phpMyAdmin在phpmyadmin官网下载最新版,解压到/usr/local/lsws/DEFAULT/html/重命名之后即可以通过 http://youdomain/phpmyadmin/index.php 进行管理
  5. 开启apc在/usr/local/lsws/lsphp5/lib/ 目录新建一个php.ini文件,重启服务后将会引入这个配置文件
    [apc]
    extension=apc.so
    apc.shm_size = 16M
    重启,查看phpinfo中APC是否正确开启,将在下篇中介绍一些APC的配置和使用

好了,一个高性能,同时兼容apache配置的web服务器建好了,等我用用之后再写一篇应用配置。感谢收看。

*修订版 1
添加了GD库中 freetype和jpeg的支持

*修订版 2
系统升级到Debian 6
Mysql升级到5.1
Litespeed 升级到4.0.20
php升级到5.3.5

原创文章,转载请注明: 转载自贝壳博客

本文链接地址: 在Debian 中安装 Litespeed (第一次修订)

Joomla Nginx rewrite

joomla 在Niginx下的rewrite规则很简单,主要就是红色部分
如果出现502错误,请参看前一篇介绍
server {
  server_name www.xxx.com;
  root /home/xxx/www/www.xxx.com;
  index index.php index.html;
 
  location / {
    try_files $uri $uri/ /index.php?q=$request_uri;
  }
 
  location ~ .php$ {
    fastcgi_pass 127.0.0.1:9000;
    fastcgi_index index.php;
    include fastcgi_params;
    fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
  }
}

原创文章,转载请注明: 转载自贝壳博客

本文链接地址: Joomla Nginx rewrite

typecho IIS rewrite 规则

[ISAPI_Rewrite]
RewriteRule ^/admin(.*) /admin/$1 [L]
RewriteRule ^/(.*)(html|htm)$ /index.php/$1$2 [L]
RewriteRule ^([^.]+)$ /index.php/$1 [L]

说明一下
第一条 重定向后台地址
第二条 将带html htm 后缀的重写
第三条 排除带”.”的 其余的全部重写
缺点:
使用像 google网站管理员 通过html文件来验证的时候麻烦一点
得在前面添加一条
RewriteRule /google26f74facfee37a5d.html $0 [L]

原创文章,转载请注明: 转载自贝壳博客

本文链接地址: typecho IIS rewrite 规则

phurl IIS Rewrite 规则

phurl是一款非常优秀的PHP开源短网址服务程序,官方提供了基于apache的rewrite规则,这里给出我写的基于IIS的rewrite规则

而现在大部分国内IDC使用的是基于IIS的全能型主机,如果你购买的就是IIS主机,那么这条规则你一定用得上!

[ISAPI_Rewrite]

RewriteRule ^/([a-zA-Z0-9_-]+)$ /redirect.php?alias=$1

原创文章,转载请注明: 转载自贝壳博客

本文链接地址: phurl IIS Rewrite 规则

Kohana v3 IIS rewrite 规则

是在qeephp论坛看到的一条规则,排除所有带 “.”的请求,其余的全部重写向index.php

[ISAPI_Rewrite]
RewriteCond Host: www.xxx.com
RewriteRule ^([^.]+)$ /index.php/$1 [L]

由于sitemap模块动态生成 sitemap.xml,所以也需要重写向index.php

RewriteCond Host: www.xxx.com
RewriteRule /sitemap.xml /index.php/sitemap [L]

原创文章,转载请注明: 转载自贝壳博客

本文链接地址: Kohana v3 IIS rewrite 规则

kohana 启用cache模块,采用apc缓存用户数据,令并发连接性能提高10倍

测试环境

YardVPS $3.5套餐 (之前的介绍)

Debian 5 + Nginx0.7.67 + php5.3.3 + php5-fpm + mysql5.0.51

测试站:购乐宝

缓存方式:apc

测试方式 webbench 10并发 30秒

 

$webbench -t 30 -c 10 http://www.golebo.com/

不使用用户缓存 最好结果

Benchmarking: GET http://www.golebo.com/
10 clients, running 30 sec.
Speed=866 pages/min, 408085 bytes/sec.
Requests: 433 susceed, 0 failed.

 

使用用户缓存,最好结果

Benchmarking: GET http://www.golebo.com/
10 clients, running 30 sec.
Speed=8260 pages/min, 3907868 bytes/sec.
Requests: 4130 susceed, 0 failed.

 

10倍的速度提升,相信启用缓存非常有效!

 

原创文章,转载请注明: 转载自贝壳博客

本文链接地址: kohana 启用cache模块,采用apc缓存用户数据,令并发连接性能提高10倍

解决由FastCGI Buffer不够引起的Joomla 在Nginx下出现 502 Bad Gateway 错误

今天装完joomla,能进后台,但是前台一直报502 Bad Gateway错误,网上搜索后找到解决办法,是由于Nginx中FastCGI buffer不够,这是张宴前辈的配置
修改nginx.conf,添加如下fastcgi设置
http {

  ********

    fastcgi_connect_timeout 300;
    fastcgi_send_timeout 300;
    fastcgi_read_timeout 300;
    fastcgi_buffer_size 64k;
    fastcgi_buffers 4 64k;
    fastcgi_busy_buffers_size 128k;
    fastcgi_temp_file_write_size 128k;
  *******
}

原创文章,转载请注明: 转载自贝壳博客

本文链接地址: 解决由FastCGI Buffer不够引起的Joomla 在Nginx下出现 502 Bad Gateway 错误