压力测试是在什么环境下做的?
环境分为开发环境和线上环境,我们做测试是在开发环境上进行测试的,只有测
试通过了才会上线。
92、App 数据是怎么来的
APP 数据是客户端传递相应的参数调用服务器端的接口,服务器端从数据库或者缓
存数据从读取数据转换为 XML/json 数据,提供给 APP 端。
93、如何处理负载、高并发?(好好看看,经常问到,能回 答到主要的东西即可)
从低成本、高性能和高扩张性的角度来说有如下处理方案:
1、HTML 静态化
其实大家都知道,效率最高、消耗最小的就是纯静态化的 html 页面,所以我们尽可能
使我们的 网站上的页面采用静态页面来实现,这个最简单的方法其实也是最有效的
方法。
2、图片服务器分离
把图片单独存储,尽量减少图片等大流量的开销,可以放在一些相关的平台上,
如骑牛等
3、数据库集群和库表散列及缓存
数据库的并发连接为 100,一台数据库远远不够,可以从读写分离、主从复制,
数据库集群方面来着手。另外尽量减少数据库的访问,可以使用缓存数据库如 memcache、
redis。
4、镜像:
尽量减少下载,可以把不同的请求分发到多个镜像端。
5、负载均衡:
Apache 的最大并发连接为 1500,只能增加服务器,可以从硬件上着手,如 F5 服务
器。当然硬件的成本比较高,我们往往从软件方面着手。
负载均衡 (Load Balancing) 建立在现有网络结构之上,它提供了一种廉价有效
透明的方法扩展网络设备和服务器的带宽、增加吞吐量、加强网络数据处理能力,同时
能够提高网络的灵活性和可用性。目前使用最为广泛的负载均衡软件是 Nginx、LVS、
HAProxy。我分别来说下三种的优缺点:
Nginx 的优点是:
- 工作在网络的 7 层之上,可以针对 http 应用做一些分流的策略,比如针对域名、目
录结构,它的正则规则比 HAProxy 更为强大和灵活,这也是它目前广泛流行的主要原因
之一,Nginx 单凭这点可利用的场合就远多于 LVS 了。 - Nginx 对网络稳定性的依赖非常小,理论上能 ping 通就就能进行负载功能,这个也
是它的优势之一;相反 LVS 对网络稳定性依赖比较大,这点本人深有体会; - Nginx 安装和配置比较简单,测试起来比较方便,它基本能把错误用日志打印出来。
LVS 的配置、测试就要花比较长的时间了,LVS 对网络依赖比较大。 - 可以承担高负载压力且稳定,在硬件不差的情况下一般能支撑几万次的并发量,负
载度比 LVS 相对小些。 - Nginx 可以通过端口检测到服务器内部的故障,比如根据服务器处理网页返回的状态
码、超时等等,并且会把返回错误的请求重新提交到另一个节点,不过其中缺点就是不
支持 url 来检测。比如用户正在上传一个文件,而处理该上传的节点刚好在上传过程中
出现故障,Nginx 会把上传切到另一台服务器重新处理,而 LVS 就直接断掉了,如果是
上传一个很大的文件或者很重要的文件的话,用户可能会因此而不满。 - Nginx 不仅仅是一款优秀的负载均衡器/反向代理软件,它同时也是功能强大的 Web
应用服务器。LNMP 也是近几年非常流行的 web 架构,在高流量的环境中稳定性也很好。 - Nginx 现在作为 Web 反向加速缓存越来越成熟了,速度比传统的 Squid 服务器更快,
可以考虑用其作为反向代理加速器。 - Nginx 可作为中层反向代理使用,这一层面 Nginx 基本上无对手,唯一可以对比 Nginx
的就只有 lighttpd 了,不过 lighttpd 目前还没有做到 Nginx 完全的功能,配置也不
那么清晰易读,社区资料也远远没 Nginx 活跃。 - Nginx 也可作为静态网页和图片服务器,这方面的性能也无对手。还有 Nginx 社区非
常活跃,第三方模块也很多。
Nginx 的缺点是: - Nginx 仅能支持 http、https