面对并发我们是如何优化KuangStudy网站性能的?

每个项目都会随着用户和数据的增长调整架构,来面对未来的问题,我们也不例外,在1月5号我们平台正式公测后,引起了很多观众的热烈反响,仅仅4天,注册用户便破万。随之而来的就是平台开始变得卡顿,所以我们开始了我们的问题排查和优化,下面就和大家聊聊我们是如何处理的吧。

Nginx

一个网站,核心会分为几部分:前端、后台服务、数据库,服务器。我们最开始项目是打的jar包 ,一个tomcat支撑不了多少并发,Tomcat 默认配置的最大请求数是 150,也就是说同时支持 150 个并发,当然了,也可以将其改大。但是每次直播的时候,并发会暴增,所以我们只能开始搭建集群。

搭建集群后引入了Nginx做反向代理,负载均衡也解决了,我们根据不同的服务器的性能做了权重,果然增加了Nginx,做了负载之后,网站访问快了不少。但是又迎来了Session共享的问题,我们将用户的会话信息放入redis,session共享搞定。接入层搞定了之后,我们发现我们的江湖模块还是很慢。

慢SQL

我们开始排查日志,发现了一些SQL处理竟然要1.5s左右,简直受不了。根本问题是我们做了联表查询,关联的表比较多,于是我们开始优化数据库结构,增加了许多冗余字段,后面江湖首页,只用查询一个表了,从蜗速到现在几乎秒开了。分类我们从数据库查询优化到使用静态数据管理,因为几乎不会发生变化。同时消息提示的sql还有个人主页的sql我们也做了相应的处理,所以现在整个网站的响应速度大大提高了。

主从复制、读写分离

接入层的问题解决后,我们发现项目的压力瓶颈转移到了数据库上面,开始我们还是单个数据库,但是用户的热情远远超出了我们的想象,读和写都在一个数据库,性能完全不太够用,于是我们又买了一台服务器开始做主从,MySQL的主从还是比较简单的,几个命令就搭建好了,然后我们使用了sharding jdbc来做读写分离。写完之后,网站整体的性能都提高了。于是我们发了版,保证了线上运行不卡顿。

信任与责任

连续一周,我们都是凌晨两三点睡,不断的优化用户的建议,让平台越来越稳定和完善,不过努力都是值得的,用户越来越多,迎来了众多年会员的同时,我们也迎来了我们的第一个终身会员,这是信任,这是责任。我不能辜负大家的信任,做更多有意义的事情,做更纯净的社区,做更多的开源组件和更优质的教程来帮助大家,这是我们团队的使命,也是学相伴的使命。

无论遇到多少的Bug,就像飞哥说的,我们灭了它就完事了!没有解决不了的问题,这就是属于我们技术人的底气!

邀请入驻

如果大家平时有写文章的爱好,或者已经有了很多笔记,也欢迎大家能够将自己的文章搬到我们的kuangstudy平台上,提出宝贵的意见,可能我们现在不是最好的,但是我们会努力变成最好的!

以学为伴,一生相伴!

看到了这里,不妨点个喜欢支持我们一下吧!

网站性能调优实战-学相伴KuangStudy的更多相关文章

  1. Java性能调优实战,覆盖80%以上调优场景

    Java 性能调优对于每一个奋战在开发一线的技术人来说,随着系统访问量的增加.代码的臃肿,各种性能问题便会层出不穷. 日渐复杂的系统,错综复杂的性能调优,都对Java工程师的技术广度和技术深度提出了更 ...

  2. JVM 性能调优实战之:一次系统性能瓶颈的寻找过程

    玩过性能优化的朋友都清楚,性能优化的关键并不在于怎么进行优化,而在于怎么找到当前系统的性能瓶颈.性能优化分为好几个层次,比如系统层次.算法层次.代码层次…JVM 的性能优化被认为是底层优化,门槛较高, ...

  3. JVM 性能调优实战之:使用阿里开源工具 TProfiler 在海量业务代码中精确定位性能代码

    本文是<JVM 性能调优实战之:一次系统性能瓶颈的寻找过程> 的后续篇,该篇介绍了如何使用 JDK 自身提供的工具进行 JVM 调优将 TPS 由 2.5 提升到 20 (提升了 7 倍) ...

  4. spring-petclinic性能调优实战(转)

    1.spring-petclinic介绍 spring-petclinic是spring官方做的一个宠物商店,结合了spring和其他一些框架的最佳实践. 架构如下: 1)前端 Thymeleaf做H ...

  5. Apache Pulsar 在 BIGO 的性能调优实战(上)

    背景 在人工智能技术的支持下,BIGO 基于视频的产品和服务受到广泛欢迎,在 150 多个国家/地区拥有用户,其中包括 Bigo Live(直播)和 Likee(短视频).Bigo Live 在 15 ...

  6. [网站性能2]Asp.net平台下网站性能调优的实战方案

    文章来源:http://www.cnblogs.com/dingjie08/archive/2009/11/10/1599929.html 前言    最近帮朋友运营的平台进行了性能调优,效果还不错, ...

  7. Asp.net平台下网站性能调优的实战方案(转)

    转载地址:http://www.cnblogs.com/chenkai/archive/2009/11/07/1597795.html 前言 最近帮朋友运营的平台进行了性能调优,效果还不错,所以写出来 ...

  8. PHP 性能分析第三篇: 性能调优实战

    注意:本文是我们的 PHP 性能分析系列的第三篇,点此阅读 PHP 性能分析第一篇: XHProf & XHGui 介绍 ,或  PHP 性能分析第二篇: 深入研究 XHGui. 在本系列的 ...

  9. 高性能 Java 计算服务的性能调优实战

    作者:vivo 互联网服务器团队- Chen Dongxing.Li Haoxuan.Chen Jinxia 随着业务的日渐复杂,性能优化俨然成为了每一位技术人的必修课.性能优化从何着手?如何从问题表 ...

随机推荐

  1. 预备知识-python核心用法常用数据分析库(上)

    1.预备知识-python核心用法常用数据分析库(上) 目录 1.预备知识-python核心用法常用数据分析库(上) 概述 实验环境 任务一:环境安装与配置 [实验目标] [实验步骤] 任务二:Pan ...

  2. C语言中都有哪些常见的数据结构你都知道几个?

    上次在面试时被面试官问到学了哪些数据结构,那时简单答了栈.队列/(ㄒoㄒ)/~~其它就都想不起来了,今天有空整理了一下几种常见的数据结构,原来我们学过的数据结构有这么多~ 首先,先来回顾下C语言中常见 ...

  3. C++构造函数注意事项

    1.匿名对象 首先应该明确匿名对象,匿名对象是之没有对象名,调用完构造函数后即析构的对象.下面通过代码捕捉类的构造函数和析构函数,以进行说明: #include <iostream> us ...

  4. Ubuntu用apt安装MySQL

    这里以MySQL5.7为例. # 如果之前有安装旧版,先移除sudo apt-get --purge remove mysql-server mysql-client mysql-common # 安 ...

  5. Luogu 520题纪念

    一入OI深似海......

  6. docker的集群管理工具

    docker 集群管理三剑客: docker compose: Compose 是用于定义和运行多容器 Docker 应用程序的工具.通过 Compose,您可以使用 YML 文件来配置应用程序需要的 ...

  7. 【java + selenium3】窗口基本操作及8大定位元素方法总结(一)

    一.窗口基本操作 1. 关于窗口的设置都是由window对象提供的: 获取window的对象方法: driver.manage().window(); //1.获取 window 对象 Window ...

  8. yaml基本用法

    简介 YAML 是 "YAML Ain't Markup Language"(YAML 不是一种标记语言)的递归缩写.在开发的这种语言时,YAML 的意思其实是:"Yet ...

  9. 写给初学者的Linux errno 错误码机制

    不同于Java的异常处理机制, 当你使用C更多的接触到是基于错误码的异常机制, 简单来说就是当调用的函数发生异常时, 程序不会跳转到一个统一处理异常的地方, 取而代之的是返回一个整型错误码. 可能会有 ...

  10. 菜鸡的Java笔记 第十一 - java 封装性

    1.1封装的基础实现.        封装是把过程和数据包围起来,对数据的访问只能通过已定义的接口.面向对象计算始于这个基本概念,即现实世界可以被描绘成一系列完全自治.封装的对象,这些对象通过一个受保 ...