Php 服务器运行缓慢,因为MySQL的使用非常频繁

Php 服务器运行缓慢,因为MySQL的使用非常频繁,php,mysql,nginx,replication,Php,Mysql,Nginx,Replication,我的网站简介:这是一个类似于BuySellAds的广告网络。出版商注册并为他们的网站创建广告空间,广告商可以选择他们想要在哪个广告空间上做广告 这就是它的工作原理:广告商上传广告,然后在给定的时间内购买任何adspace。访问出版商网站时,广告将显示在adspace中 要使站点运行,需要做以下几件事: 广告主上传横幅和购买曝光时间的接口; 提供所有广告并收集访客、点击等统计信息的广告服务器。。。; 尽可能快地在cronjob上运行的脚本,以更新当前每1-5分钟运行一次的用户余额,理想情况下,它将

我的网站简介:这是一个类似于BuySellAds的广告网络。出版商注册并为他们的网站创建广告空间,广告商可以选择他们想要在哪个广告空间上做广告

这就是它的工作原理:广告商上传广告,然后在给定的时间内购买任何adspace。访问出版商网站时,广告将显示在adspace中

要使站点运行,需要做以下几件事:

广告主上传横幅和购买曝光时间的接口; 提供所有广告并收集访客、点击等统计信息的广告服务器。。。; 尽可能快地在cronjob上运行的脚本,以更新当前每1-5分钟运行一次的用户余额,理想情况下,它将是一个无休止的循环; 另一个用于处理从adserver收集的数据的统计信息的脚本。 目前,我每件事都只使用一个VPS,所以您可以想象它是非常无响应的,当cronjobs运行时,它会很慢,有时会崩溃

理想情况下,我认为应该有4台服务器才能获得最佳性能:

前端 广告服务器 统计数据处理服务器 进程服务器$$ 如果前端只处理出版商和广告商的界面,ads服务器将发送广告并收集数据,统计处理将处理数据,余额处理服务器将贷记用户余额,并在余额达到0时停止广告

我已经尝试过主/从复制,但我无法让它以我想要的方式工作,因为所有4台服务器都需要读/写权限


你会怎么做?

我会优化你处理数据的方式。如果没有人阅读,你为什么要计算统计数据?因此,在考虑使用更多服务器之前,也许:

仅根据用户需求创建统计信息,而不是一次创建所有统计信息。 如果服务器繁忙,您也可以延迟此操作,在客户端,这不是一场灾难 广告投放时也计算用户余额 优化表和查询
所有这些都是可能的,您在实现时不应该遇到问题。如果你在每天有300万访问量的网站上投放广告,你会遇到问题——你不应该想到其他的选择,可能会延迟插入或在网上找到其他解决方案。但我敢肯定,如果你每天使用一台服务器收到几百万个请求,那么它就会死掉,不是因为它无法处理,而是因为90%的请求将在2-3小时内到达。

这个问题确实无法回答。可能有很多原因导致它反应缓慢和迟钝。您尚未提供任何信息来帮助确定可能的原因。分析您的查询、分析您的服务器性能、内存使用情况、cpu周期等-直到您确定是什么原因使其变慢,否则您根本无法解决任何性能问题。@Steve性能问题是在同一VPS上有stats and balances处理脚本。这是s start,您知道原因是什么,现在你需要弄清楚“为什么”。是查询、磁盘IO、资源使用、索引不良、贪婪语句还是其他数千种可能的原因至少您应该提供脚本或简单版本、解释、DDL和崩溃错误、分析结果etc@Steve每当平衡处理脚本启动所有8个CPU内核以完成99%的任务时,站点的其余部分就会变得非常缓慢。我试着用usleep在每一次循环结束时暂停一下,虽然有点好转,但仍然很慢。我也尝试过用nice将优先级改为19,但没有太大变化。我已经搜索了几个小时来限制4个CPU内核的脚本,但没有找到任何有用的方法。@Steve我讨厌把90%的时间浪费在服务器配置上,而不是实际开发网站。过去30天,服务器提供了3700万次页面浏览量,总带宽为6.2 TB,而且增长很快。向广告商展示统计数据,以便他们知道哪一个空间最适合购买。代码已经被优化为遗忘,我真的认为这里唯一的选择是在服务器之间分配任务。只是尝试头脑风暴,尝试在客户端进行计算,并且只在需要时进行。您还可以尝试划分cron作业并放松服务器。