快速,持续,稳定,傻瓜式
支持Mysql,Sqlserver数据同步

MySql单表最大8000W+之数据库遇瓶颈记

请联系QQ:1793040 索取软件

MySql单表最大8000W +数据库遇到瓶颈

原始:MySql单表最大8000W +数据库遇到瓶颈

昨晚,开火到两点或三点,在早上七点多起床,昏暗地醒来,发现计算机仍在开机,并迅速起床以查看结果。昨晚执行的SQL命令。由于昨晚对阿里云RDS进行了升级,我等待了将近两个小时,仍处于升级过程中。早上,阿里云在升级过程中反应异常,现在正在加紧处理。有点痛

\

该项目主要分为WEB,WEB-Manager,WEB-API,APP(ANDROID,IOS)。

开发语言主要是ASP.NET。

数据库MySql

该体系结构采用ASP.NET + EF + ORM。 Unity依赖项注入采用DDD的一些做法。

ORM使用AutoMapper

使用Redis缓存

Log4net记录文件日志,刚开始使用Mongodb进行日志记录,不久后取消。

Angularjs \ WEP用于WEB端

API层通过JSON数据与APP交互,并且用户状态通过access_token传输

当前基于仓库(存储库)模式实现数据库层

开始时,该项目渴望上线。其中大多数使用Linq + lambda查询方法。实际上,他们发现异常的业务调整和快速的请求响应,并将复杂的查询更改为本地SQL。通过Context.DataBase.SqlQuery \;执行

\

其他技术未一一介绍

目前访问量最大的是APP端,最大并发数1300 +

主要是API的压力相对较大,平均每天100W +请求。该API当前已部署在Windwos服务器2012上。超过50个界面

该数据库使用阿里云的独立MySql。 RDS 5.6版本,10盒12G,连接号2000,iops 6000

当前,最大单个表为8000W +数据。物理文件为300G,APIlog为每天100W +。该API完全独立于业务系统。除了DBLog日志外,还有Log4g.net生成的文件日志。

当前使用的是阿里云负载。由阿里云购买的阿里云负载 这两个应用程序均为8盒16G,10M带宽,并且资源文件位于CDN上。

WEB终端和WEB管理后台部署在主服务器上,而只有API在从服务器上。

\ 最近,用户数量超过10+,最大并发数量为1300+。从前一天晚上开始,数据库CPU一直处于较高状态,并且一段时间内达到了100%的临界点,从而导致许多SQL命令执行中的错误链接被拒绝。阿里云的警报消息也随之出现,然后我停止了IIS应用程序,因为不停止应用程序就很难恢复MySql数据库。大约5分钟后,数据库恢复正常,然后打开IIS应用程序。令人痛心的是,阿里云的负载运行状况检查还会提示异常,但是运行状况显示异常,并且请求仍在分发中,这令人非常困惑。我将立即回收IIS应用程序池资源,先停止再重新启动,这里提醒您重新启动IIS应用程序池时,最好先停止IIS应用程序,然后再重新启动IIS应用程序池,否则流量大的情况很难起床。几分钟后,对负载进行运行状况检查显示正常。

\ 进入阿里云后,我查看了各种监控指标,发现流量比前一个小时突然增加。我以为发生了攻击,但是我跟踪了一些连接并发现这是一个正常的请求,但是360的防御助手显示确实存在多种攻击,但是这些请求根本不足以跨越数据库,这可能是数十个请求。 \ Nbsp;一些简单的方法XSS攻击发布在这里:攻击次数不是很多,但是主要的攻击内容和参数就是这些类型

url/\ quot%22/%3E%3C/脚本%3E%3Cscript%3Ealert()%3C/脚本%3E
url/\ quot%22 + onmouseover =警报()+ d =” u”。 %22

url/matrix_callback.php \

url/index.php?选项= com_fields \\; view =字段\ amp;布局=模态list%5Bfullordering%5D = updatexml(0x3a,concat(1,md5(233)),1)

后来发现数据库处于危机中,CPU多次达到100%,活动连接和不活动连接的数量比平时高得多。当前,数据库中有超过8000W数据的最大表之一,而超过300W的表有十几个。这是因为查询已拖动数据库。在通常的开发中,我们都需要查询SQL在0.03秒内完成。但是对于涉及这些大表的查询,我们将其设置为在0.5秒内返回。今天必须检查0.5秒,

我检查了阿里云控制台的慢速SQL日志,系统现在仍在运行一点,因此我逐一进行了这些慢速SQL优化。我不会立即发布版本,也就是说,我不会重写SQL代码。优化。这样,慢速SQL便一次通过了。大约有20多于2秒的执行时间,最慢的达到10秒,而解析的行的最大数量超过10W行。不严格,否则将不会有超过10W +的解析线,但是当我哭泣时,由兄弟挖出的坑会被填满。只需使用explain即可一次调整索引,并且之前已经通过表空间进行了优化。

昨晚高并发时,数据库再次发出警报。幸运的是,警报并未对我崩溃。与客户沟通并决定扩展数据库。现在,容量已扩展到16个具有14000 iops16000的64G连接盒。

添加了一些应用程序要点,现在它是一个主机和两个从机

它应该持续一段时间

\

接下来,我们需要继续进行读写分离,拆分较大的表,并且代码和数据库将继续进行优化。尽量做到最佳。

让我们来看一下分布式\\ n因为架构的发展是根据市场情况而定,所以您不会走得太远,甚至不会落后于市场

周末周末比较累,所以我会写得简短些,有时间继续

\

发表于

2019-12-14 03:04

DotNet之路

阅读()\

注释()\

编辑\

收集

刷新注释并刷新页面回到顶部

相关推荐

咨询软件
 
QQ在线咨询
售前咨询热线
QQ1793040