一个外部监测工具会向你报告,在过去30分钟内,5个被监测的URL的平均响应时间增加了一倍。该项目运行在一个单一的物理服务器上,该服务器不在你的管理之下,在数据中心的某个地方运行。你通过SSH连接,启动htop,看到CPU负载为95%,内存早已溢出。
根据git,你知道大约一周前他们做了一个数据库迁移到一个新的表结构,一个同事在聊天中写道,他不得不连夜运行迁移,因为重新计算列和索引花了大约5个小时,在此期间几乎整个数据库都被锁定,INSERT和SELECT都不工作。
因此,性能问题可能是由于索引设计不当,重新设计的SQL查询不佳,或大的连接池。没有时间恢复,根据谷歌分析,网站上有7千名用户,中断5个小时意味着客户的声誉风险,并在这段时间内损失数万到数十万克朗(这很难估计,投影仪凑够了)。你意识到只在测试环境中测试功能是不够的,你还需要实施负载测试。
由于这是你最大客户的一个重要的电子商务商店,而且你预计情况可能会变得更糟,你有30秒的时间来做决定。
你如何进行?
1.你什么都不做。网站的速度会变慢,但只要服务器能够处理,我想就可以了...... 2.你会试着准备一个恢复DB结构的计划,并尽快运行它。 3.你把网站迁移到一个更强大的服务器上(但这意味着迅速向客户提高价格,然后等待可能6个小时才能完成迁移,因为你有数百GB的数据库表)。 4.你会发现哪些SQL查询和哪些页面花费的时间最多,并简单地禁用它们。 5.你运行Cloudflare,让它静态地检入它能检入的东西。 6.其他一些魔法(我认为没有什么可想的)...
Jan Barášek Více o autorovi
Autor článku pracuje jako seniorní vývojář a software architekt v Praze. Navrhuje a spravuje velké webové aplikace, které znáte a používáte. Od roku 2009 nabral bohaté zkušenosti, které tímto webem předává dál.
Rád vám pomůžu:
Články píše Jan Barášek © 2009-2024 | Kontakt | Mapa webu
Status | Aktualizováno: ... | zh