1. 性能
在浏览器端,可能通过浏览器缓存、使用页面压缩、合理布局页面、减少cookie传输等手段改善性能。还可以使用CDN,将网站静态内容分发至离用户最近的网络服务商机房。可以在网站机房部署反向代理服务器,缓存热点文件,加快请求响应速度。
在应用服务器端,可以使用服务器本地缓存和分布式缓存。也可以通过异步操作将用户请求发送至消息队列等待后续任务处理,而当前请求直接返回给用户。
将多台应用服务器组成一个集群共同对外服务。
在代码层面,可以通过使用多线程,改善内存管理等手段优化性能。
1.1 性能测试指标: 响应时间、 并发数、 吞吐量、 性能计数器
1.2 性能测试方法:
1.2.1 性能测试: 以系统设计初期规划的性能指标为预期目标,对系统不断施加压力,难系统在资源可接受范围内是否能达到性能预期
1.2.2 负载测试: 对系统不断地增加并发请求以增加系统压力,直到系统的某项或多项性能指标达到安全临界值。如某种资源已经呈饱和状态,这时继续对系统施加压力,系统的处理能力不但不能提高,反而会下降。
1.2.3 压力测试: 超过安全负载的情况下,对系统继续施加压力,直到系统崩溃或不能再处理任何请求,以此获得系统最大压力承受能力。
1.2.4 稳定性测试: 在特定硬件、软件、网络环境条件下,给系统加载一定业务压力,使系统运行一段较长时间,以此检测系统是否稳定。
1.3 性能优化
1.3.1 前端性能优化:
1.3.1.1 减少HTTP请求: 合并CSS,合并JS,合并图片
1.3.1.2 使用浏览器缓存: 对于CSS,JS,LOGO及一些更新频率都比较低的表态资源文件,可通过设置HTTP头中Cache-Control和Expired的属性,缓存在浏览器中
1.3.1.3 启用压缩: 压缩对服务端和浏览器都会产生一定的压力,需权衡考虑
1.3.1.4 CSS放在页面最上面,JS放在页面最下面
1.3.1.5 减少Cookie传输,考虑静态资源使用独立域名
1.3.2 CDN加速
1.3.3 反向代理
1.3.4 应用服务器性能优化
1.3.4.1 分布式缓存: Memcached
1.2.4.2 异步操作: 任何可以晚点做的事情都应该晚点再做
1.3.4.3 使用集群
1.3.4.4 代码优化: 多线程、资源复用(数据库连接、复杂对象等)、数据结构、垃圾回收
1.3.5 存储性能优化
1.3.5.1 固态硬盘 vs 机械硬盘
1.3.5.2 B+树 vs LSM 树
1.3.5.3 RAID vs HDFS