2

我试图做出决定,但我很挣扎。我有几个选择。

一种选择是让每个用户每 10 秒运行一次 mysql 查询,另一种选择是让他们使用 curl 从另一个页面提取结果。

查询从数据库中提取 80 个值(2 列,40 行)。

我只是不确定哪个对资源最不利。

4

2 回答 2

1

已切换到使用 Memcache 并使用 Ajax 作为重新加载器,这大大减少了服务器负载。

感谢所有反馈。

于 2012-09-07T15:18:59.140 回答
0

好问题。您可以在两种不同的数据流备选方案之间进行直接选择。

您说过您有 1-40 个用户,但大多数处于该用户数的低端。你还没有说这是一个网络应用程序还是一个直接连接的应用程序,但你使用的是 php,所以它可能是一个网络应用程序。

您已经说过您需要重新加载并可能重新向每个用户显示一个包含 40 个短行的结果集。

你说过你需要每十秒钟做一次。

还没有描述你的十秒规范的起源。据推测,结果集中的某些变化经常足以证明十秒刷新是合理的。

还没有描述您的每个用户是否获得不同的结果集,或者他们是否都相同。但这并没有太大的区别。

那么,有哪些选择和问题呢?让我们解决它。

A. 每次刷新都使用 MySQL 查询。

B. 为每次刷新获取另一个网页(使用 curl)。

  1. Pro A. 你的系统会更简单,也不会因为系统故障而出现故障。

  2. Pro A. 编程和测试要容易得多。

  3. Pro A. 生产中的故障将更容易诊断和修复。

  4. 骗局 A. 每分钟用 40 x 40 x 6 个请求访问 MySQL 数据库似乎很多。

  5. 骗局 4. 但是您仍然必须生成要使用 CURL 抓取的网页。

  6. 缺点 4. 如果您的系统负载过重,您可以通过将 10 秒更改为 30 秒或类似的时间来优雅地降级。

  7. 缺点 4. MySQL 在处理小型缓存请求方面非常快。

  8. Pro B. 如果已经生成了您正在使用 CURL 的网页,那么这可能会更快。

  9. 骗局 8. 但它仍然是一个更复杂的操作。

  10. Pro A. 向服务器添加 RAM 比向复杂系统添加人工要便宜得多。

基于这个分析(这是基于我对你系统的不完全理解)MySQL绝对是要走的路。您可能可以根据自己的理解扩大此分析。

于 2012-09-05T13:27:00.743 回答