[文章作者:张宴 本文版本:v1.0 最后修改:2008.10.28 转载请注明原文链接:http://blog.zyan.cc/post/375/]

  VPS(全称Virtual Private Server)是利用最新虚拟化技术在一台物理服务器上创建多个相互隔离的虚拟私有主机。它们以最大化的效率共享硬件、软件许可证以及管理资源。对其用户和应用程序来讲,每一个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

  详见:http://blog.zyan.cc/post/374.htm



  二、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.zyan.cc www.zyan.cc zyan.cc *.zyan.cc;
   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




Tags: , , , ,



技术大类 » Web服务器 | 评论(101) | 引用(0) | 阅读(186342)
shz Email
2022-6-28 21:51
I’m excited to uncover this page. I need to to thank you for ones time for this particularly fantastic read!! I definitely really liked every part of it and i also have you saved to fav to look at new information in your site.  online dealings
shz Email
2022-6-28 22:05
I truly like you're composing style, incredible data, thankyou for posting.  online dealings
shz Email
2022-6-28 22:25
This website and I conceive this internet site is really informative ! Keep on putting up!  online dealings
shz Email
2022-6-28 22:28
I think this is an informative post and it is very useful and knowledgeable. therefore, I would like to thank you for the efforts you have made in writing this article.  online dealings
shz Email
2022-6-28 22:44
This is a fantastic website , thanks for sharing.  online dealings
shz Email
2022-6-28 22:54
I recently found many useful information in your website especially this blog page. Among the lots of comments on your articles. Thanks for sharing.  online dealings
choosite
2022-7-5 16:15
尽管是很久前的老博客了,但是内容并没有过时,值得学习的VPS知识,希望能在这里学习choosite,更了解域名,VPS,主机。做更好的内容,比价服务
jeni
2022-7-12 12:48
AhmedMalik Email
2022-9-10 05:08
Shopping is in the changes they are  available in  Coach Outlet will send you a coupon in the post to use in their upon only after KFC Near Me
mytom2 Email
2022-9-15 01:01
The gameplay of wordle online is predicated on the well-known thoughts recreation, however this time it has been remodeled right into a recreation of creativity, or musical refrain words. William Byrd, a composer from the Renaissance, served because the supply of the sport's title. Search phrases like a enjoyable discordant English melody are wanted.
tiger Email
2022-9-15 01:02
wordle game is a fairly easy recreation. In six makes an attempt, you should select precisely one word or character title from the world of choral music. You may add an image of your answer as soon as you've got discovered this complicated time period. We imagine you'll take pleasure in this online recreation in the event you like choral music terms! In case you give it a attempt, you'll perceive precisely why this online recreation is so widespread.
thomas Email
2022-9-15 01:03
For these of you who know what five nights at freddy's is, you know the way enjoyable it may be. However for these of you who do not, Freddy's is a restaurant the place there are animatronic creatures that come to life at night time. They've a dinner menu with a number of yummy meals like pizzas and burgers, however the principle draw is their animatronics! Some animatrons are pleasant whereas others usually are not so pleasant.
hotgame Email
2022-9-15 01:05
wordle unlimited followers can at all times entry Wordle. On this Wordle-like clone, 5 letters are wanted, however the answer is likely to be something from J.Ok. Rowling's recreation world. Among the many day by day crossword puzzle's five-letter wizarding terms are "squib," "filch," "cloak," and "broom." Wordle could also be match for somebody who shouldn't be a Potterhead however is accustomed to different magical settings.
bevis0405 Email
2022-12-27 16:18
Thanks for your post, it's very helpful retro bowl I hope in the future you will provide more information. I will visit and support the article for you
david Email
2023-3-14 16:01
This article written by Zhang Yan is an excellent introduction to VPS technology and its potential for creating multiple isolated virtual Snow Rider 3D private servers on a single physical server. The author's clear and concise writing style, combined with their in-depth knowledge of the subject matter, makes this article a valuable resource for anyone interested in VPS hosting.
American Jacket Store Homepage
2023-6-9 15:12
Thank you for helping people get the information they need. Great stuff as usual. Keep up the great work!!! American Jacket Store
토토사이트 Email Homepage
2023-9-21 13:03
Amazing content. The attention to detail is commendable. Definitely add it as a bookmark for future reference and blog updates!토토사이트
메이저사이트 Email Homepage
2023-9-21 13:03
Everyone has some secret abilities, but sometimes blue eyes can become an ability. This best resume writing ability sometimes disappears, so much so that you cannot find it.<a href="https://totowho.com">메이저사이트</a>
Lucky cola
2024-2-7 13:39
Get lost in the world of gaming and let the adventure begin.
Lucky cola
分页: 5/6 第一页 上页 1 2 3 4 5 6 下页 最后页
发表评论
表情
emotemotemotemotemot
emotemotemotemotemot
emotemotemotemotemot
emotemotemotemotemot
emotemotemotemotemot
打开HTML
打开UBB
打开表情
隐藏
记住我
昵称   密码   游客无需密码
网址   电邮   [注册]