服务器集群+负载均衡来支撑.
大的认识-------既然响应是不可避免的,我们要做的是把工作内容”平均”分给每台服务器.
最理想的状态 每台服务器的性能都被充分利用.
Web服务器 php mysql memcache
A:xxxxxxxx.111 装有nginx服务器的 存放了静态的文件 静态资源
B:xxxxxxxx.118 装有php-fpm进行解析php代码的服务器
C:xxxxxxxx.110 装有mysql数据库的 读 111—写,更新 删除
D:xxxxxxxx.108 装有memcached 数据库的 redis
Ab
一般的原则是 装有mysql的服务器 磁盘大一些 因为存储数据
装有nginx php-fpm 和memcached的服务器 内存需要大一些
在阿里云上购买的服务器 1台 A
RAM(内存): 2G
带宽:5M,
CPU:2核
HD: 500G
10000万Pv ip
(用来运行nginx/apache web服务器 访问静态文件 单台服务器访问静态文件可以并发10000(1s) 大约80%的用户访问在1s之内)这样可以说明nginx的性能是不错的 1000
如果加上mysql,php肯定是会慢的了,并发量也相应的会减少,还需要看当前这个网站的性质是什么,所谓的并发是不固定的。
一般能达到并发1500左右,相应时间大约75%左右在1s之内 就差不多
步骤:
1: A号服:
编译nginx ,并配置
存放静态资源和静态页面的
2:B号服务器
1.1安装 mysql
存有大量的数据
3: C号服务器:
2.1: 编译PHP
注意: enbale-fpm , with-mysql=mysqlnd (编译成独立fpm进程,支持mysql,和memcached)
2.2: 下载第3方的memcached扩展 编译进来
4: D号服:
编译 memcached,运行memcached服务器
-----------------------------------------------------------分割线--------------------------------------------------------------------
以上是服务器集群的基本搭配基本与介绍,以下是配置文件的配置
服务器集群与负载均衡搭建完毕
1:问题 B-->C 的mysql连接很慢
解决: my.cnf中的[mysqld]节点中,添加
skip-name-resolve // 这句话使mysql连接时忽略解析域名,在制定Mysql权限时,只能根据IP限制,不能根据域名限制.
2: 问题 当memcache中没有相应的数据,从后台回调数据时,
http的状态码是404,(虽然内容正常),这样不利于SEO
解决: nginx/conf/nginx.conf
error_page 404 =200 /callback.php; // 这样 404被改写成200来响应中