Posted by 荒野无灯 @ 五月 19, 2010 at 11:02 上午 under
由于VPS 内存只有512M ,不得不采取一些方法来优化下了。
对于OpenVZ的VPS,由于不支持swap,只能省着点用内存了。
只有Xen的VPS可以,OpenVZ不支持添加swap
《VPS优化之添加swap交换分区》
1、进入一个目录
cd /var/2、获取256M的文件块:
dd if=/dev/zero of=swapfile bs=1024 count=2621443、创建swap文件
/sbin/mkswap swapfile4、xxswap文件
/sbin/swapon swapfile5、查看一下swap是否正确:
/sbin/swapon -s6、加到 fstab文件中让系统引导时自动启动
vi /etc/fstab在末尾增加以下内容:
/var/swapfile swap swap defaults 0 0
也可以执行如下命令,感觉这样更方便
echo “/var/swapfile swap swap defaults 0 0″ >>/etc/fstab顺便附上DD命令的参数介绍:
dd命令
功能:把指定的输入文件拷贝到指定的输出文件中,并且在拷贝过程中可以进行格式转换。可以用该命令实现DOS下的diskcopy命令的作用。先用dd命令把软盘上的数据写成硬盘的一个寄存文件,再把这个寄存文件写入第二张软盘上,完成diskcopy的功能。需要注意的是,应该将硬盘上的寄存文件用rm 命令删除掉。系统默认使用标准输入文件和标准输出文件。
语法:dd [选项]if =输入文件(或设备名称)。
of =输出文件(或设备名称)。
ibs = bytes 一次读取bytes字节,即读入缓冲区的字节数。
skip = blocks 跳过读入缓冲区开头的ibs*blocks块。
obs = bytes 一次写入bytes字节,即写入缓冲区的字节数。
bs = bytes 同时设置读/写缓冲区的字节数(等于设置ibs和obs)。
cbs = byte 一次转换bytes字节。
count=blocks 只拷贝输入的blocks块。
摘自:http://www.vpser.net/opt/vps-add-swap.html
关闭不需要的服务:
root@vps:~# chkconfig --list apache2 0:off 1:off 2:on 3:on 4:on 5:on 6:off bind9 0:off 1:off 2:on 3:on 4:on 5:on 6:off bootlogd 0:off 1:off 2:off 3:off 4:off 5:off 6:off console-setup 0:off 1:off 2:off 3:off 4:off 5:off 6:off S:on cron 0:off 1:off 2:off 3:off 4:off 5:off 6:off fetchmail 0:off 1:off 2:on 3:on 4:on 5:on 6:off hwclock 0:off 1:off 2:off 3:off 4:off 5:off 6:off hwclock-save 0:off 1:off 2:off 3:off 4:off 5:off 6:off keyboard-setup 0:off 1:off 2:off 3:off 4:off 5:off 6:off S:on killprocs 0:off 1:on 2:off 3:off 4:off 5:off 6:off klogd 0:off 1:off 2:on 3:on 4:on 5:on 6:off module-init-tools 0:off 1:off 2:off 3:off 4:off 5:off 6:off mysqld 0:off 1:off 2:off 3:off 4:off 5:off 6:off networking 0:on 1:off 2:off 3:off 4:off 5:off 6:off nginx 0:off 1:off 2:off 3:off 4:off 5:off 6:off ondemand 0:off 1:off 2:on 3:on 4:on 5:on 6:off postfix 0:off 1:off 2:on 3:on 4:on 5:on 6:off procps 0:off 1:off 2:off 3:off 4:off 5:off 6:off quota 0:off 1:off 2:off 3:off 4:off 5:off 6:off S:on quotarpc 0:off 1:off 2:on 3:on 4:on 5:on 6:off rc.local 0:off 1:off 2:on 3:on 4:on 5:on 6:off rcS 0:off 1:off 2:off 3:off 4:off 5:off 6:off rsync 0:off 1:off 2:on 3:on 4:on 5:on 6:off samba 0:off 1:off 2:on 3:on 4:on 5:on 6:off screen-cleanup 0:off 1:off 2:off 3:off 4:off 5:off 6:off S:on sendmail 0:off 1:off 2:on 3:on 4:on 5:on 6:off sendsigs 0:on 1:off 2:off 3:off 4:off 5:off 6:off ssh 0:off 1:off 2:on 3:on 4:on 5:on 6:off stop-bootlogd 0:off 1:off 2:off 3:off 4:off 5:off 6:off stop-bootlogd-single 0:off 1:off 2:off 3:off 4:off 5:off 6:off sysklogd 0:off 1:off 2:on 3:on 4:on 5:on 6:off udev 0:off 1:off 2:off 3:off 4:off 5:off 6:off udev-finish 0:off 1:off 2:off 3:off 4:off 5:off 6:off udevmonitor 0:off 1:off 2:off 3:off 4:off 5:off 6:off udevtrigger 0:off 1:off 2:off 3:off 4:off 5:off 6:off umountfs 0:on 1:off 2:off 3:off 4:off 5:off 6:off umountnfs.sh 0:on 1:off 2:off 3:off 4:off 5:off 6:off umountroot 0:on 1:off 2:off 3:off 4:off 5:off 6:off urandom 0:on 1:off 2:off 3:off 4:off 5:off 6:off S:on vzquota 0:on 1:on 2:on 3:on 4:on 5:on 6:off x11-common 0:off 1:off 2:off 3:off 4:off 5:off 6:off S:on |
apache2 我都已经卸载了,这个肯定要禁用的。但是奇怪的是我用
居然删除不了。
Nginx 的主配置文件(nginx.conf)优化
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 | 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; 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.3.2(Fast-pfm)的配置优化
1、php.ini 配置文件中关于eAcelerator的优化。只使用1M共享内存,删除所有在{zh1}3600秒内无法存取的脚本缓存,用磁盘辅助进行缓存。
[eaccelerator] zend_extension="/usr/local/webserver/php/lib/php/extensions/no-debug-non-zts-20090626/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 个:
二是修改以下一行,将TCP模式改为Unix Socket模式:
引用
MySQL 5 配置优化
1、使用以下参数编译安装的 MySQL 5 默认支持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 |
优化后的效果:
mysql_pdo 和 imagick 这两个组件不属于本文内容,这里也帖出来看下:
top查看结果表明,5个 php-fpm 进程大概使用了125 M 物理内存,mysqld 大概使用了16M 内存,再加上两个 nginx 进程各使用10M内存,另外还有一个php-fpm 使用了 4M 左右的内存。这里总共使用的物理内存量为 165 M 左右 。
跑wordpress 在后台再也不会出现
Fatal error: Out of memory (allocated 16515072) (tried to allocate 311296 bytes)
然后就ssh 和 ftp 都连不上了,看来优化配置是非常的重要。现在我VPS 基本还有200M左右的空余物理内存。
本文基本参考:张宴