对其用户和应用程序来讲,每一个VPS平台的运行和管理都与一台独立主机完全相同,因为每一个VPS均可独立进行重启并拥有自己的root访问权限、用户、IP地址、内存、过程、文件、应用程序、系统函数库以及配置文件。
VPS服务器最重要的指标就是内存大小,多个VPS服务器可以共享一颗CPU,但不能共享同一块内存。内存越大,价格越贵。 
  下面,以我的博客所在的VPS为例,介绍在128M内存下对 Nginx 0.7.x + PHP 5.2.6(FastCGI)+ MySQL 5.1 的优化。 
  至于 Nginx + PHP + MySQL 的安装配置,可参见:《Nginx 0.7.x + PHP 5.2.6(FastCGI)搭建胜过Apache十倍的Web服务器(第4版) 》 
-------------------------------------------------------------------------------- 
  优化后的效果: 
  提供HTTP服务的1个Nginx进程占用11M物理内存,5个php-cgi进程每个占用8M左右物理内存,1个MySQL服务器占用7M物理内存,加上两个占用内存不大的Nginx和php-cgi父进程,Nginx + PHP + MySQL 系列总共只占用47.7%的物理内存,即62M物理内存(128M * 47.7% ≈ 62M)。 
   
  另外,VPS服务器系统自身和其它程序也会使用一些内存,但128M内存的VPS已经够用。总体而言,经过优化后,128M内存的VPS跑 Nginx + PHP + MySQL 效果不错。当然,如果有Money购买更大内存的VPS,就更好了。 
优化项如下: 
  一、增加256M的swap交换文件 
  1、创建并激活swap交换文件 
cd /var/ 
dd if=/dev/zero of=swapfile bs=1024 count=262144 
/sbin/mkswap swapfile 
/sbin/swapon swapfile 
  2、加到fstab文件中让系统引导时自动启动 
vi /etc/fstab 
在末尾增加以下内容: 
引用 
/var/swapfile swap swap defaults 0 0 
详见: 
-------------------------------------------------------------------------------- 
二、Nginx 0.7.19 的主配置文件(nginx.conf)优化

复制代码代码如下:
user www www; 
#Nginx每个进程耗费10M~12M内存,这里只开启一个Nginx进程,节省内存。 
worker_processes 1; 
error_log /data1/logs/nginx_error.log crit; 
pid /usr/local/webserver/nginx/nginx.pid; 
#Specifies the value for maximum file descriptors that can be opened by this process. 
worker_rlimit_nofile 51200; 
events 

use epoll; 
worker_connections 51200; 

http 

include mime.types; 
default_type application/octet-stream; 
#charset gb2312; 
server_names_hash_bucket_size 128; 
client_header_buffer_size 32k; 
large_client_header_buffers 4 32k; 
sendfile on; 
tcp_nopush on; 
keepalive_timeout 60; 
tcp_nodelay on; 
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; 
#对网页文件、CSS、JS、XML等启动gzip压缩,减少数据传输量,提高访问速度。 
gzip on; 
gzip_min_length 1k; 
gzip_buffers 4 16k; 
gzip_http_version 1.0; 
gzip_comp_level 2; 
gzip_types text/plain application/x-javascript text/css application/xml; 
gzip_vary on; 
#limit_zone crawler $binary_remote_addr 10m; 
server 

listen 80; 
server_name blog.s135.com www.s135.com s135.com *.s135.com; 
index index.html index.htm index.php; 
root /data0/htdocs/blog; 
#limit_conn crawler 20; 
#针对Bo-Blog系统的Rewrite静态化 
rewrite ^/post/([0-9]+).htm$ /read.php?$1 last; 
rewrite ^/post/([0-9]+)_([0-9]+).htm$ /read.php?$1&page=$2 last; 
rewrite ^/post/([0-9]+)_([0-9]+)_([0-9]+).htm$ /read.php?$1&page=$2&part=$3 last; 
rewrite ^/index_([0-9]+)_([0-9]+).htm$ /index.php?mode=$1&page=$2 last; 
rewrite ^/star_([0-9]+)_([0-9]+).htm$ /star.php?mode=$1&page=$2 last; 
rewrite ^/category_([0-9]+).htm$ /index.php?go=category_$1 last; 
rewrite ^/category_([0-9]+)_([0-9]+)_([0-9]+).htm$ /index.php?go=category_$1&mode=$2&page=$3 last; 
rewrite ^/archive_([0-9]+)_([0-9]+).htm$ /index.php?go=archive&cm=$1&cy=$2 last; 
rewrite ^/archive_([0-9]+)_([0-9]+)_([0-9]+)_([0-9]+).htm$ /index.php?go=archive&cm=$1&cy=$2&mode=$3&page=$4 last; 
rewrite ^/showday_([0-9]+)_([0-9]+)_([0-9]+).htm$ /index.php?go=showday_$1-$2-$3 last; 
rewrite ^/showday_([0-9]+)_([0-9]+)_([0-9]+)_([0-9]+)_([0-9]+).htm$ /index.php?go=showday_$1-$2-$3&mode=$4&page=$5 last; 
location ~ .*\.(php|php5)?$ 

#将Nginx与FastCGI的通信方式由TCP改为Unix Socket。TCP在高并发访问下比Unix Socket稳定,但Unix Socket速度要比TCP快。 
fastcgi_pass unix:/tmp/php-cgi.sock; 
#fastcgi_pass 127.0.0.1:9000; 
fastcgi_index index.php; 
include fcgi.conf; 

location ~ /read.php 

#将Nginx与FastCGI的通信方式由TCP改为Unix Socket。TCP在高并发访问下比Unix Socket稳定,但Unix Socket速度要比TCP快。 
fastcgi_pass unix:/tmp/php-cgi.sock; 
#fastcgi_pass 127.0.0.1:9000; 
fastcgi_index index.php; 
include fcgi.conf; 

#博客的图片较多,更改较少,将它们在浏览器本地缓存15天,可以提高下次打开我博客的页面加载速度。 
location ~ .*\.(gif|jpg|jpeg|png|bmp|swf)$ 

expires 15d; 

#博客会加载很多JavaScript、CSS,将它们在浏览器本地缓存1天,访问者在看完一篇文章或一页后,再看另一篇文件或另一页的内容,无需从服务器再次下载相同的JavaScript、CSS,提高了页面显示速度。 
location ~ .*\.(js|css)?$ 

expires 1d; 

log_format access '$remote_addr - $remote_user [$time_local] "$request" ' 
'$status $body_bytes_sent "$http_referer" ' 
'"$http_user_agent" $http_x_forwarded_for'; 
access_log /data1/logs/access.log access; 

}

三、PHP 5.2.6(FastCGI)的配置优化
  1、php.ini 配置文件中关于eAcelerator的优化。只使用1M共享内存,删除所有在最后3600秒内无法存取的脚本缓存,用磁盘辅助进行缓存。

复制代码代码如下:
[eaccelerator] 
zend_extension="/usr/local/webserver/php/lib/php/extensions/no-debug-non-zts-20060613/eaccelerator.so" 
eaccelerator.shm_size="1" 
eaccelerator.cache_dir="/usr/local/webserver/eaccelerator_cache" 
eaccelerator.enable="1" 
eaccelerator.optimizer="1" 
eaccelerator.check_mtime="1" 
eaccelerator.debug="0" 
eaccelerator.filter="" 
eaccelerator.shm_max="0" 
eaccelerator.shm_ttl="3600" 
eaccelerator.shm_prune_period="3600" 
eaccelerator.shm_only="0" 
eaccelerator.compress="1" 
eaccelerator.compress_level="9" 
eaccelerator.keys = "disk_only" 
eaccelerator.sessions = "disk_only" 
eaccelerator.content = "disk_only" 

2、php-fpm.conf 的配置优化 
  修改两项,一是修改以下一行,将启动的php-cgi进程数由原来的128个改为5个: 
引用 
<value name="max_children">5</value> 
  二是修改以下一行,将TCP模式改为Unix Socket模式: 
引用 
<value name="listen_address">/tmp/php-cgi.sock</value> 
-------------------------------------------------------------------------------- 
  四、MySQL 5.1.26 配置优化 
  1、使用以下参数编译安装的 MySQL 5.1 默认支持4种存储引擎:CSV、MRG_MYISAM、MEMORY、MyISAM,不支持InnoDB存储引擎。由于内存有限,而InnoDB耗费的内存较大,这里推荐使用MyISAM存储引擎。 
./configure --prefix=/usr/local/webserver/mysql/ --enable-assembler --with-extra-charsets=complex --enable-thread-safe-client --with-big-tables --with-readline --with-ssl --with-embedded-server --enable-local-infile 
make && make install 
  2、MySQL 5.1 配置文件(my.cnf)优化

复制代码代码如下:
[client] 
port = 3306 
socket = /tmp/mysql.sock

[mysql] 
prompt="(\u:s135:)[\d]> " 
no-auto-rehash

[mysqld] 
user = mysql 
port = 3306 
socket = /tmp/mysql.sock 
basedir = /usr/local/webserver/mysql 
datadir = /usr/local/webserver/mysql/data 
open_files_limit = 600 
back_log = 20 
max_connections = 100 
max_connect_errors = 200 
table_cache = 60 
external-locking = FALSE 
max_allowed_packet = 16M 
sort_buffer_size = 128K 
join_buffer_size = 128K 
thread_cache_size = 10 
thread_concurrency = 8 
query_cache_size = 0M 
query_cache_limit = 2M 
query_cache_min_res_unit = 2k 
default_table_type = MyISAM 
thread_stack = 192K 
transaction_isolation = READ-UNCOMMITTED 
tmp_table_size = 512K 
max_heap_table_size = 32M 
/usr/local/webserver/mysql/data/slow.log 
/usr/local/webserver/mysql/data/error.log 
long_query_time = 1 
log_long_format 
server-id = 1 
#log-bin = /usr/local/mysql/data/binlog 
binlog_cache_size = 2M 
max_binlog_cache_size = 4M 
max_binlog_size = 512M 
expire_logs_days = 7 
key_buffer_size = 4M 
read_buffer_size = 1M 
read_rnd_buffer_size = 2M 
bulk_insert_buffer_size = 2M 
myisam_sort_buffer_size = 4M 
myisam_max_sort_file_size = 10G 
myisam_max_extra_sort_file_size = 10G 
myisam_repair_threads = 1 
myisam_recover

[mysqldump] 
quick 
max_allowed_packet = 16M 

Nginx 0.7.x + PHP 5.2.6(FastCGI)+ MySQL 5.1 在128M小内存VPS服务器上的配置优化的更多相关文章

  1. Flask+Nginx+uWSGI在Ubuntu服务器上的配置

    Flask+Nginx+uWSGI在Ubuntu服务器上的配置 Step1 安装系统环境 Ubuntu服务器选择是阿里云的ECS服务,ECS提供单独的内存\CPU\带宽\存储规格可以选择,并且提供合适 ...

  2. Nginx 0.8.x + PHP 5.2.13(FastCGI)搭建胜过Apache十倍的Web服务器[摘抄]

    [文章作者:张宴 本文版本:v6.3 最后修改:2010.07.26 转载请注明原文链接:http://blog.s135.com/nginx_php_v6/] 前言:本文是我撰写的关于搭建“Ngin ...

  3. Nginx 0.8.x + PHP 5.2.13(FastCGI)搭建胜过Apache十倍的Web服务器(第6版)

    前言:本文是我撰写的关于搭建“Nginx + PHP(FastCGI)”Web服务器的第6篇文章.本系列文章作为国内最早详细介绍 Nginx + PHP 安装.配置.使用的资料之一,为推动 Nginx ...

  4. Nginx 0.8.x + PHP 5.2.13(FastCGI)搭建胜过Apache十倍的Web服务器(第6版)(转)

    转自:http://blog.s135.com/nginx_php_v6/] 前言:本文是我撰写的关于搭建“Nginx + PHP(FastCGI)”Web服务器的第6篇文章.本系列文章作为国内最早详 ...

  5. Nginx 0.8.x + PHP 5.2.13(FastCGI)搭建胜过Apache十倍的Web服务器

    [文章作者:张宴 本文版本:v6.3 最后修改:2010.07.26 转载请注明原文链接:http://blog.zyan.cc/nginx_php_v6/] 前言:本文是我撰写的关于搭建“Nginx ...

  6. 使用Nginx+uwsgi在亚马逊云服务器上部署python+django项目完整版(二)——部署配置及相关知识

    ---恢复内容开始--- 一.前提: 1.django项目文件已放置在云服务器上,配置好运行环境,可正常运行 2.云服务器可正常连接 二.相关知识 1.python manage.py runserv ...

  7. Nginx 0.8.x + PHP 5.2.13(FastCGI)搭建胜过Apache十倍的Web服务器(第6版)[原创]

    mkdir -p /data0/software cd /data0/software wget http://sysoev.ru/nginx/nginx-0.8.46.tar.gz wget htt ...

  8. 高流量站点NGINX与PHP-fpm配置优化(译)

    使用Nginx搭配PHP已有7年的这份经历让我们学会如何为高流量站点优化NGINX和PHP-fpm配置. 以下正是这方面的一些提示和建议: 1. 将TCP切换为UNIX域套接字 UNIX域套接字相比T ...

  9. Nginx配置优化的几个参数

    worker_processes 8 一般CPU(i/o)密集型配置为核数相同,网络(i/o)密集型配置为核数倍数(我配置为2倍) worker_cpu_affinity(这个没用过) 仅适用于lin ...

随机推荐

  1. html自定义标签属性

    <a href="#" _asd="xxxx" onclick="test(event)">test</a> < ...

  2. 将Xcode升级到10.0以上版本,Appium启动报错的问题

    前言 现在的Xcode最新版本都是在10.1,原先使用的版本是9.4.1!结果今天手贱将其升级... 然后,跑IOS自动化时,出现“Xcode version '0.1'. Support for X ...

  3. 一种关键字搜索---edu.cn

    比如要搜索知识点最小二乘,可以这样: 曲线拟合的最小二乘法 edu.cn 然后就一大片关于edu的相关链接,很多知名学校链接 http://www.bb.ustc.edu.cn/jpkc/xiaoji ...

  4. tornado+ansible+twisted+mongodb运维自己主动化系统开发(四)

    这周好忙,依据之前的写了个简陋的demo.放在腾讯的云主机上了,大家多交流哈 demo地址 http://203.195.193.251/

  5. android 二维码制作,显示到UI,并保存SD卡,拿来就能用!!

    转载请注明出处:王亟亟的大牛之路 如今二维码已经渗透了我们的生活.各种扫码关注啊.扫码下载的,今天上一个依据输入内容生成二维码的功能. 包结构: 界面截图: 功能:输入网址–>生成图片–> ...

  6. Lumen开发:简单实现auth用户认证

    打开bootstrap/app.php,取消下面两段代码的注释, $app->middleware([ App\Http\Middleware\ExampleMiddleware::class ...

  7. 也谈在 .NET 平台上使用 Scala 语言(续)

    而我是在 Ubuntu 操作系统中使用 Scala.NET 的,应该没有这个问题. 那么,就让我们来測试一下吧. 如今,我们添加一个 DotNet.cs 文件,例如以下所看到的: 1 2 3 4 5 ...

  8. hdu1573(线性同余方程组)

    套模板,因为要是正整数,所以处理一下x=0的情况. X问题 Time Limit: 1000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K ...

  9. wcf利用IDispatchMessageInspector实现接口监控日志记录和并发限流

    一般对于提供出来的接口,虽然知道在哪些业务场景下才会被调用,但是不知道什么时候被调用.调用的频率.接口性能,当出现问题的时候也不容易重现请求:为了追踪这些内容就需要把每次接口的调用信息给完整的记录下来 ...

  10. Netty环境搭建 (源码死磕2)

    [正文]netty源码  死磕2: 环境搭建 本小节目录 1. Netty为什么火得屌炸天? 1.1. Netty是什么? 1.2. Netty火到什么程度呢? 1.3. Netty为什么这么火? 2 ...