java吧 关注:1,295,288贴子:12,829,158
  • 7回复贴,共1

前段时间给一学校开发评教系统出现了个高并发问题,这里记录下吧

取消只看楼主收藏回复

背景:给深圳的一个初中学校开发了一个学生评教系统,这个学院有2000多学生,项目开发完后上线是在一个1核2G的服务器上(当时觉得反正用户也不多,按理说这配置虽然低但跑个小项目还是没问题的)。结果在评教正式开始的那天出问题了(tomcat服务器时不时就偷停了,另一块就是全校学生同时登陆的时候很卡很卡,导致用户体验很不好,而且由于tomcat暂停那会还出现了错误数据很是头疼)
大家有什么好的解决方案也可以探讨探讨


IP属地:湖南1楼2021-01-01 16:34回复
    接着更新下


    IP属地:湖南7楼2021-01-02 20:21
    回复
      2026-01-21 01:23:33
      广告
      不感兴趣
      开通SVIP免广告
      解决方案思考:其实最简单的方法就是换一个配置高一点的服务器,但这个成本好高,我给人开发的这个项目也就挣了1500的服务费(出租的形式),暂时还不想花大价钱买贵的服务器。所以这个方案就pass了。所以思来想去要不再买个1核2G的服务器搭建一个集群试试。这里打个比方,用一个破自行车拉一定重量的货物拉不动或者很吃力的情况下,要是换成拖拉机肯定能拉得动,但买拖拉机太贵了而且可能还大材小用了,那我再买个破自行车应该是性价比最高的了。


      IP属地:湖南8楼2021-01-02 20:22
      回复
        下面我分享下我自己的解决过程:
        1、两个服务器上分别安装好tomcat服务器,并把项目代码上传到服务器然后启动tomcat。先保证两个服务器上的tomcat都能访问项目。因为并发不只是tomcat并发的问题其实最主要的是数据库并发的问题。(多个学生并发登录的时候都是多个ip请求数据库查询导致的,如果我们用两个数据库分担一下压力,一半的学生访问Atomcat上的A数据库。另一半的学生访问Btomcat上的B数据库。然后让这两个数据库的数据保持一致不就ok了嘛)


        IP属地:湖南9楼2021-01-03 19:25
        回复
          2、修改项目jar包(源码是用springboot框架开发的)数据库jdbc配置文件,Atomcat配置A服务器上的数据库,Btomcat配置B服务器上的数据库。并把A数据库和B数据库实现主主复制就行了。 ①配置文件--A服务器的mysql数据库配置文件vi /etc/my.cnfserver-id=11 #任意自然数n,只要保证两台MySQL主机不重复就可以了。log-bin=mysql-bin #开启二进制日志auto_increment_increment=2 #步进值auto_imcrement。一般有n台主MySQL就填nauto_increment_offset=1 #起始值。一般填第n台主MySQL。此时为第一台主MySQLbinlog-ignore=mysql #忽略mysql库【我一般都不写】binlog-ignore=information_schema #忽略information_schema库【我一般都不写】replicate-do-db=aa #要同步的数据库,默认所有库--B服务器的mysql数据库配置文件vi /etc/my.cnfserver-id=12log-bin=mysql-binauto_increment_increment=2auto_increment_offset=2replicate-do-db=aa配置好后重启MySQL② 开始构建主主复制第一步:在B中创建一个A主机中可以登录的MySQL用户用户:mysql11密码:mysql11mysql>GRANT REPLICATION SLAVE ON *.* TO ‘mysql11’@’A主机ip’ IDENTIFIED BY ‘mysql11’;mysql>FLUSH PRIVILEGES;第二步:在B主机mysql查看二进制日志名和位置mysql>show master status;


          IP属地:湖南10楼2021-01-04 16:13
          回复
            第三步: 告知二进制文件名与位置在A主机中执行:mysql>CHANGE MASTER TOMASTER_HOST=’B主机ip’,MASTER_USER=’mysql11’,MASTER_PASSWORD=’mysql11’,MASTER_LOG_FILE=’mysql-bin.000084’,MASTER_LOG_POS=107;第四步:分别开启start slavemysql>SHOW SLAVE STATUS\G #查看是否配置成功

            当看到Slave_IO_Running: YES、Slave_SQL_Running: YES才表明状态正常最后你可以新建表插入数据测试下看能不能实现两个数据库同步


            IP属地:湖南14楼2021-01-05 23:35
            回复
              3、配置nginx负载均衡分配两tomcatnginx默人的链接数是1024,这里改成5000
              events {
              worker_connections 5000;
              }

              启动nginx就可以了。


              IP属地:湖南15楼2021-01-05 23:36
              回复
                有兴趣的朋友可以平时多交流交流技术上的问题


                IP属地:湖南16楼2021-01-05 23:37
                回复