2013-04-24 116 views
0

希望这个问题不会太宽泛/模糊/总体。本地主机上的网站速度很慢,服务器上的速度很慢

我开发了一个WordPress站点,使用大量的自定义Ajax加载搜索结果。这不是一个针对WordPress或Ajax的问题​​(我相信)(甚至可能不包括PHP,idk!)。

在运行WAMP的基本HP(8gb ram,i7处理器)上开发时,该网站运行真棒。我还没有看到一个Ajax调用需要超过2-3秒。
但是,当站点运行在我的VPS(Hostgator级别9)上时,速度要慢得多 - ajax呼叫平均需要6秒才能完成,通常在10-12秒内达到峰值。

我的问题是这样的:是我的php函数(包括一些小到相对较大的mysql查询)的错误的缓慢因素,还是服务器的错误?我问的唯一原因是因为本地站点和服务器之间的加载时间存在令人难以置信的显着差异。

我意识到这可能是模糊的;如果需要更多信息,我会很乐意提供任何我可以(除了案例情况,不幸的是我有一个禁止我共享站点ATM的NDA)。

更多信息:

某些Ajax调用瞬间(像那些只拉从DB适量的信息)瞬间。

需要几秒钟的调用是那些从几个不同的表中抽取大量信息的请求(请记住,我在使用WordPress,并使用WP_Query类,因此SQL查询甚至数据库结构不是我自己的 - 使用posts/post元表),从结果生成HTML,并将其返回给JavaScript以进行追加。该网站的主要搜索结果基于位置而拉入结果,但同时也拉入其他几位数据(图像,结果元数据等)。尽管他们通常发生在当地的密西西比河附近,但我无法立即看到这些类型的过程。服务器上的问题是,即时在本地发生的相同的呼叫需要6-10秒钟开始在服务器上停止。

到目前为止,我所阅读的评论和回答似乎与处理SQL查询是在索引数据库上完成的重复查询的假设/方案有关。完成的查询由WP_Query类执行,并且(恕我直言)不是简单的查询。

当我说“阿贾克斯调用”我不只是意味着这个过程的一部分。我的意思是从一个按钮被点击到附加HTML时。

该网站没有用户,但我在服务器上;它还不是一个公共场所。

+1

提示:大部分浏览器现在有开发工具,包括一个“网”窗格或类似的,你可以看到资产加载时间的可视化表示。 (本地2-3秒*非常慢)。 – 2013-04-24 16:13:42

回答

4

我还没有看到一个单一的Ajax调用需要超过2-3秒。

在单个用户的开发机器上,这些应该是即时的。在范围内的查询响应很可能是设计缺陷的症状(非索引数据库?)。

编辑:

这是有道理的开始与DB。您可以使用profiling喜欢:

runQuery ("SET profiling=1"); 
// do your WordPress stuff here 
runQuery ("SHOW PROFILES"); 
runQuery ("SHOW PROFILE FOR QUERY n"); // where n loops on the results of SHOW PROFILES 

而且对生活和开发服务器的比较结果。 (请注意runQuery是一个虚构的函数)。

EDIT2:

也可以考虑直接在数据库中,而不是WP_Query运行自己的查询。我相信你能想出更好的东西。检查wpdb object作进一步参考。

2

可以有多种可能性在这里:

  1. 正如“vbence”中提到,并发用户访问您的网站(你可以很容易地,如果谷歌Analytics(分析)在您的网站&检查下启用计算出“实时“或者仅仅借助原始的apache日志)。

  2. 资源限制(特别是内存):有可能是您的应用程序正在几乎所有的可用内存的情况下。运行top command &检查使用&可用内存那里。如果它将开始采用交换空间,那么事情将开始放缓。 enter image description here

  3. Mysql的tunning(这可能是与你的情况下):只需配置文件在服务器&支票一部分的代码需要时间来确认,这是因为MySQL的PHP​​脚本。如果是这样的话,那么你需要优化mysql设置。检查与MySQL有关的缓慢对生产下列职位: MySQL 10x slower on one server compared to another

1

运行的东西在本地是指:

  • 只有你。
  • 不跳闸沿着电线“
  • 专用服务器 - 你的电脑。

托管服务器上运行的东西往往意味着:

  • 很多用户(哪怕只是1为您的实际应用)
  • 许多旅行向上和向下的线来从页面和资源服务器给你(和你的要求吧)
  • 与其他用户共享服务器。使用本地时间

避免是比较标准的。而是使用您的VPS时间作为规范并专注于它们。正如其他人指出的那样,甚至可能会怀疑当地时间。