Deprecated
: htmlspecialchars(): Passing null to parameter #1 ($string) of type string is deprecated in
/www/wwwroot/testblog.58heshihu.com/var/Widget/Archive.php
on line
1057
首页
关于
Search
1
给你10个市场数据调研报告的免费下载网站!以后竞品数据就从这里找!
182 阅读
2
php接口优化 使用curl_multi_init批量请求
144 阅读
3
《从菜鸟到大师之路 ElasticSearch 篇》
107 阅读
4
2024年备考系统架构设计师
104 阅读
5
PHP 文件I/O
92 阅读
php
thinkphp
laravel
工具
开源
mysql
数据结构
总结
思维逻辑
令人感动的创富故事
读书笔记
前端
vue
js
css
书籍
开源之旅
架构
消息队列
docker
教程
代码片段
redis
服务器
nginx
linux
科普
java
c
ElasticSearch
测试
php进阶
php基础
登录
Search
标签搜索
php函数
php语法
性能优化
安全
错误和异常处理
问题
vue
Composer
Session
缓存
框架
Swoole
api
并发
异步
正则表达式
php-fpm
mysql 索引
开发规范
协程
dafenqi
累计撰写
786
篇文章
累计收到
28
条评论
首页
栏目
php
thinkphp
laravel
工具
开源
mysql
数据结构
总结
思维逻辑
令人感动的创富故事
读书笔记
前端
vue
js
css
书籍
开源之旅
架构
消息队列
docker
教程
代码片段
副业
redis
服务器
nginx
linux
科普
java
c
ElasticSearch
测试
php进阶
php基础
页面
关于
搜索到
2
篇与
的结果
2023-08-08
PHP高并发高负载系统架构
PHP高并发高负载系统架构1、为什么要进行高并发和高负载的研究1.1、产品发展的需要1.2、公司发展的需要1.3、当前形式决定的2、高并发和高负载的约束条件2.1、硬件2.2、部署2.3、操作系统2.4、Web 服务器2.5、PHP2.6、MySQL2.7、测试3、解决之道——硬件篇处理能力的提升:部署多颗CPU,选择多核心、具备更高运算频率、更大高速缓存的CPU;处理能力的提升最直接的反应在于Web请求的处理效率和PHP程序的执行效率。内存带宽与容量:更大的内存带宽和容量;内存带宽与容量的提升最直接的反应在于应对数据库大量的数据交换。磁盘搜索与I/O能力:选择更高的转速、更大的硬盘缓存、组件磁盘阵列(RAID);磁盘搜索与I/O能力的提升最直接反应在于数据库大量的查询和读写以及文件的读写。网络带宽的提升可考虑的因素包括: 更大带宽、多线路接入、独享带宽;服务器在大负载的情况下,对网络带宽的占用是十分可观的。策略:硬件设施是应对大负载的基础,硬件设施的投入可根据实际压力和预算量力而行。4、解决之道——部署篇4.1、服务器分离4.2、数据库集群和库表散列4.3、镜像4.4、负载均衡分类:1)、DNS轮循2)代理服务器负载均衡3)地址转换网关负载均衡4)NAT负载均衡5)反向代理负载均衡6)混合型负载均衡策略:根据硬件投入和业务需求,选择合理的部署方案。部署方案1:适用范围:静态内容为主体的网站和应用系统;对系统安全要求较高的网站和应用系统。Main Server:主服务器承载程序的主体运行压力,处理网站或应用系统中的动态请求;将静态页面推送至多个发布服务器;将附件文件推送至文件服务器;安全要求较高,以静态为主的网站,可将服务器置于内网屏蔽外网的访问。DB Server:数据库服务器承载数据库读写压力;只与主服务器进行数据量交换,屏蔽外网访问。File/Video Server:文件/视频服务器承载系统中占用系统资源和带宽资源较大的数据流;作为大附件的存储和读写仓库;作为视频服务器将具备视频自动处理能力。发布服务器组:只负责静态页面的发布,承载绝大多数的Web请求;通过Nginx进行负载均衡部署。部署方案2:适用范围:以动态交互内容为主体的网站或应用系统;负载压力较大,且预算比较充足的网站或应用系统;Web服务器组:Web服务无主从关系,属平行冗余设计;通过前端负载均衡设备或Nginx反向代理实现负载均衡;划分专用文件服务器/视频服务器有效分离轻/重总线;每台Web服务器可通过DEC可实现连接所有数据库,同时划分主从。数据库服务器组:相对均衡的承载数据库读写压力;通过数据库物理文件的映射实现多数据库的数据同步。共享磁盘/磁盘阵列将用于数据物理文件的统一读写用于大型附件的存储仓库通过自身物理磁盘的均衡和冗余,确保整体系统的IO效率和数据安全;方案特性:通过前端负载均衡,合理分配Web压力;通过文件/视频服务器与常规Web服务器的分离,合理分配轻重数据流;通过数据库服务器组,合理分配数据库IO压力;每台Web服务器通常只连接一台数据库服务器,通过DEC的心跳检测,可在极短时间内自动切换至冗余数据库服务器;磁盘阵列的引入,大幅提升系统IO效率的同时,极大增强了数据安全性。5、解决之道——环境篇5.1、操作系统操作系统的选择,关注点在于•是否适应于搭建SiteEngine所需要的环境程序?•系统本身占用的资源比;•系统安全性;•系统是否易于操作?策略:我们选择FreeBSD,而且是最小化安装以后的FreeBSD。5.2、Web服务器Web服务器很大一部分资源占用来自于处理Web请求,通常情况下这也就是Apache产生的压力,Apache是世界使用排名第一的Web服务器软件。它可以运行在几乎所有广泛使用的计算机平台上。在高并发连接的情况下,Nginx是Apache服务器不错的替代品。Nginx (“engine x”) 是俄罗斯人编写的一款高性能的 HTTP 和反向代理服务器。在国内,已经有新浪、搜狐通行证、网易新闻、网易博客、金山逍遥网、金山爱词霸、校内网、YUPOO相册、豆瓣、迅雷看看等多家网站、频道使用 Nginx 服务器。Nginx的优势:高并发连接:官方测试能够支撑5万并发连接,在实际生产环境中跑到2~3万并发连接数。内存消耗少:在3万并发连接下,开启的10个Nginx 进程才消耗150M内存(15M*10=150M)。内置的健康检查功能:如果 Nginx Proxy 后端的某台 Web 服务器宕机了,不会影响前端访问。策略:相对于老牌的Apache,我们选择Lighttpd和Nginx这些具有更小的资源占用率和更高的负载能力的web服务器。5.3、MysqlMySQL本身具备了很强的负载能力,MySQL优化是一项很复杂的工作,因为这最终需要对系统优化的很好理解。大家都知道数据库工作就是大量的、短时的查询和读写,除了程序开发时需要注意建立索引、提高查询效率等软件开发技巧之外,从硬件设施的角度影响MySQL执行效率最主要来自于磁盘搜索、磁盘IO水平、CPU周期、内存带宽。根据服务器上的硬件和软件条件进行MySQl优化。MySQL优化的核心在于系统资源的分配,这不等于无限制的给MySQL分配更多的资源。在MySQL配置文件中我们介绍几个最值得关注的参数:改变索引缓冲区长度(key_buffer)改变表长(read_buffer_size)设定打开表的数目的最大值(table_cache)对缓长查询设定一个时间限制(long_query_time)如果条件允许 ,一般MySQL服务器最好安装在Linux操作系统中,而不是安装在FreeBSD中。策略: MySQL优化需要根据业务系统的数据库读写特性和服务器硬件配置,制定不同的优化方案,并且可以根据需要部署MySQL的主从结构。5.4、PHP1、加载尽可能少的模块;2、如果是在windows平台下,尽可能使用IIS或者Nginx来替代我们平常用的Apache;3、安装加速器(都是通过缓存php代码预编译的结果和数据库结果来提高php代码的执行速度)eAcceleratoreAccelerator是一个自由开放源码php加速器,优化和动态内容缓存,提高了性能php脚本的缓存性能,使得PHP脚本在编译的状态下,对服务器的开销几乎完全消除。ApcAlternative PHP Cache(APC)是 PHP 的一个免费公开的优化代码缓存。它用来提供免费,公开并且强健的架构来缓存和优化 PHP 的中间代码。memcachememcache是由Danga Interactive开发的,高性能的,分布式的内存对象缓存系统,用于在动态应用中减少数据库负载,提升访问速度。主要机制是通过在内存里维护一个统一的巨大的hash表,Memcache能够用来存储各种格式的数据,包括图像、视频、文件以及数据库检索的结果等Xcache国人开发的缓存器,策略: 为PHP安装加速器。5.5、代理服务器(缓存服务器)Squid Cache(简称为Squid)是一个流行的自由软件(GNU通用公共许可证)的代理服务器和Web缓存服务器。Squid有广泛的用途,从作为网页服务器的前置cache服务器缓存相关请求来提高Web服务器的速度,到为一组人共享网络资源而缓存万维网,域名系统和其他网络搜索,到通过过滤流量帮助网络安全,到局域网通过代理上网。Squid主要设计用于在Unix一类系统运行。策略:安装Squid 反向代理服务器,能够大幅度提高服务器效率。6、解决之道——SiteEngine篇7、解决之道——测试篇7.1、测试方法7.2、测试用例7.3、压力测试压力测试是一种基本的质量保证行为,它是每个重要软件测试工作的一部分。压力测试的基本思路很简单:不是在常规条件下运行手动或自动测试,而是在计算机数量较少或系统资源匮乏的条件下运行测试。通常要进行压力测试的资源包括内部内存、CPU 可用性、磁盘空间和网络带宽等。一般用并发来做压力测试。压力测试工具:webbench,ApacheBench等7.4、漏洞测试在我们的系统中漏洞主要包括:sql注入漏洞,xss跨站脚本攻击等。安全方面还包括系统软件,如操作系统漏洞,mysql、apache等的漏洞,一般可以通过升级来解决。
2023年08月08日
28 阅读
0 评论
0 点赞
2023-08-07
php+mysql下,对网站架构方面的一些认识
php+mysql下,对网站架构方面的一些认识三层网站架构目前网站架构一般分成 负载均衡层、WEB层和数据库层负载均衡层-- LVS,WEB层--使用了nginxweb服务器,数据库层--我们使用了db集群方案。网站概况浏览量(PV) 独立访客(UV) 访问次数(VV) 独立IP 发帖量 注册会员数 跳出率 平均在线时长今日 80,973 37,999 42,573 27,979 624 140 72.27% 00:07:56昨日 179,250 74,584 88,986 54,021 1,400 285 77.48% 00:10:00历史平均 154,020 60,927 71,924 47,883 1,936 201 78.24% 00:10:00历史最高 238,993 94,647 110,552 72,692 6,602 468 89.04% 00:11:021 代码提交系统这是在代码进入生产环境前的必须要经历的。在测试服务器上开发OK后,我们提交给SVN服务器,然后进入代码提交服务器。进入代码提交服务器后,有两步要走的,我理解为一个拉,一个推。a 我们使用SVN up 将本地文件更新b 使用rsync推送到生产环境服务器以上两部分 我分别写成一个shell文件运行 bash xxx.sh 即可2 用户访问网站的流程,基本是这样的:网站使用了动态CDN,起到加速的作用,我们先把动态CDN放到一边,说说下面发生的事情。在前端我们使用了LVS,关于LVS我使用百科上的文章,给予解释下:LVS是一个开源的软件,由毕业于国防科技大学的章文嵩博士于1998年5月创立,可以实现LINUX平台下的简单负载均衡。LVS是Linux Virtual Server的缩写,意思是Linux虚拟服务器。LVS集群采用IP负载均衡技术和基于内容请求分发技术。调度器具有很好的吞吐率,将请求均衡地转移到不同的服务器上执行,且调度器自动屏蔽掉服务器的故障,从而将一组服务器构成一个高性能的、高可用的虚拟服务器。整个服务器集群的结构对客户是透明的,而且无需修改客户端和服务器端的程序。为此,在设计时需要考虑系统的透明性、可伸缩性、高可用性和易管理性。LVS集群采用三层结构一般来说,LVS集群采用三层结构,其主要组成部分为:A、负载调度器(load balancer),它是整个集群对外面的前端机,负责将客户的请求发送到一组服务器上执行,而客户认为服务是来自一个IP地址(我们可称之为虚拟IP地址)上的。B、服务器池(server pool),是一组真正执行客户请求的服务器,执行的服务有WEB、MAIL、FTP和DNS等。C、共享存储(shared storage),它为服务器池提供一个共享的存储区,这样很容易使得服务器池拥有相同的内容,提供相同的服务。A LVS1 核心是它的负载调度器2 塔负责维护一个路由表3 实时监控真实server健康状况B LVS必须有个热备 hot back,万一LVS坏了,那就完蛋了。这样,当LVS万一坏了,可以备份LVS接管工作。C 源站192.168.1.156/157 对外虚拟一个VIP 115。DNS解析域名的时候就解析到这个VIP上。至于具体用户访问是哪台服务器,对用户而言是透明的,LVS根据 IP负载均衡技术 为用户分配源站地址。D 两台源站服务器,为了可以保证某些地方的数据同步,我做了:1 两台源站服务器之间的缓存通过NFS挂载,保持同步;2 crontab中写入计划任务,同步相关ssi文件;E 后端DB的连接,我们使用了2主2从DB集群两台主库77、78对外虚拟成VIP 110,原理,当任何一台DB挂掉后,另外一台立即接管其。两台db互为主从。通过keepalived监测各自生存状态。F 主从库之间通过binlog保持同步。所有binlog均通过主库发出。其余三台从库(其中一台为主库,角色为从库)接受binlog,维护各自数据成分。G 另外我们是有了一台附件服务器。减轻WEB压力。H 另外,还有图片服务器/小图标服务器,可以放在web自身,通过域名区分。其实图片、附件、css等哪儿并不重要,只要可以通过域名访问到,是完全可以的。我们通过 博瑞系统 ,对网站进行监控。 对于web站点,首屏时间是考核的重点,任何一个用户不想等待3s钟页面还没有加载完,用户体验非常差。这是在加入CDN后,对全国各监测点进行相关的监测和性能的评测。完
2023年08月07日
19 阅读
0 评论
0 点赞