A summary of recent work
CDN(Content Delivery Network,内容分发网络)
通过在现有的Internet中增加一层新的网络架构,将网站的内容发布到最接近用户的网络”边缘”,并将用户请求导向最近的服务节点,解决Internet网络拥塞状况,提高用户访问网站的响应速度。从技术上全面解决由于网络带宽小、用户访问量大、网点分布不均等原因,解决用户访问网站的响应速度慢的根本原因。
解决目前互联网业务在网络层面可能存在的问题:
- 业务服务器接入互联网的带宽有限。
- 不同运营商之间的互联问题使得业务要考虑多运营商分布问题。
- 地域问题导致用户到服务器的物理距离会比较远,传输时延非常高。
CDN帮助用户解决互联网上有可能影响数据传输速度和稳定性的瓶颈和环节,业务只需简单接入即可完成访问加速,无需关注复杂多变的网络状况。
使用CDN后的http请求处理流程如下图:
总结:需要通过DNS解析,将域名CNAME到CDN服务商的提供的CNAME域名。放弃原来的A记录解析,全部交由CNAME域名的CDN节点来处理。CDN节点会主动或者被动的从源拉取资源。****当节点存储所请求资源就将资源返回,否则返回源服务器请求。
吐槽:腾讯的CDN和阿里的CDN差太大,阿里把腾讯甩好几条街。
MYSQL5.6内存占用过高
距离MySQL 5.6正式发布已经有比较长的时间了,目前Oracle官网上的最新GA版本MySQL server也为5.6。但reizhi在安装配置后却发现其内存占用居高不下,无论如何调整cache甚至禁用InnoDB都不能解决。由于VPS仅有1GB内存,在开启常用的Web服务之后,无力再为MySQL提供400MB以上的物理内存。
通过网络爬文,MySQL 5.6相比于前代GA版本性能提升显著,但默认缓存设置对于小型站点并不合理。通过修改my.ini文件中的performance_schema_max_table_instances参数,能够有效降低内存占用。
修改参数:
performance_schema_max_table_instances=400 table_definition_cache=400 table_open_cache=256
保存之后重新启动MySQL服务,其内存占用即可从400MB以上降低至40MB左右。
PHP-FPM内存占用过大的优化方法。
总结或多或少都有内存泄漏的问题
php-fpm优化方法
php-fpm存在两种方式,一种是直接开启指定数量的php-fpm进程,不再增加或者减少;
另一种则是开始时开启一定数量的php-fpm进程,当请求量变大时,动态的增加php-fpm进程数到上限,当空闲时自动释放空闲的进程数到一个下限。
这两种不同的执行方式,可以根据服务器的实际需求来进行调整。
要用到的一些参数,分别是pm、pm.max_children、pm.start_servers、pm.min_spare_servers和pm.max_spare_servers。
pm表示使用那种方式,有两个值可以选择,就是static(静态)或者dynamic(动态)。
下面4个参数的意思分别为:
如果dm设置为dynamic,4个参数都生效。系统会在php-fpm运行开始时启动pm.start_servers个php-fpm进程,然后根据系统的需求动态在pm.min_spare_servers和pm.max_spare_servers之间调整php-fpm进程数。
那么,对于服务器,选择哪种执行方式比较好呢?事实上,跟Apache一样,运行的PHP程序在执行完成后,或多或少会有内存泄露的问题。这也是为什么开始时一个php-fpm进程只占用3M左右内存,运行一段时间后就会上升到20-30M的原因了。
所以,动态方式因为会结束掉多余的进程,可以回收释放一些内存,所以推荐在内存较少的服务器或者VPS上使用。具体最大数量根据 内存/20M 得到。
比如说512M的VPS,建议pm.max_spare_servers设置为20(512*0.8/20)。至于pm.min_spare_servers,则建议根据服务器的负载情况来设置,比较合适的值在5~10之间。
然后对于比较大内存的服务器来说,设置为静态的话会提高效率。
因为频繁开关php-fpm进程也会有时滞,所以内存够大的情况下开静态效果会更好。数量也可以根据 内存/30M 得到。
比如说2GB内存的服务器,可以设置为50;4GB内存可以设置为100等。
比如,如果是512M的vps,设置的参数如下:
Nginx设置alias别名目录访问phpmyadmin
1.修改nginx配置文件
cp /usr/local/nginx/conf/nginx.conf /usr/local/nginx/conf/nginx.confbak #备份配置文件
vi /usr/local/nginx/conf/nginx.conf #修改配置文件,在 ** (推荐使用nano 命令,反正我是比较习惯用nano来修改。)**
server {
listen 80;
server_name localhost;
#charset koi8-r;
#access_log logs/host.access.log main;
location / {
root html;
index index.php index.html index.htm;
}
下面添加以下内容:(见粗体字,可以仿造改用)
location /phpmyadmin {
alias /home/phpmyadmin;
index index.php;
}
location ~** /phpmyadmin/.+.php$ {
if ($fastcgi_script_name ~ /phpmyadmin/**(.+.php.*)$) {
set $valid_fastcgi_script_name $1;
}
include fastcgi_params;
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME /home/phpmyadmin/$valid_fastcgi_script_name;
}
:wq! #保存,退出
2、设置/home/phpmyadmin目录权限
chown www.www /home/phpmyadmin -R #修改目录所有者为www账号
service nginx restart #重启nginx
service php-fpm restart #重启php-fpm