Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/62.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 如何优化这个网站。需要一般建议吗_Php_Mysql_Optimization_Codeigniter_Web - Fatal编程技术网

Php 如何优化这个网站。需要一般建议吗

Php 如何优化这个网站。需要一般建议吗,php,mysql,optimization,codeigniter,web,Php,Mysql,Optimization,Codeigniter,Web,这是我在这里的第一个问题,关于一个特定的网站优化。 几个月前,我们为一个客户推出了一个社区网站 一切都很好,但现在这个网站变得越来越大,当页面加载时显示出一些缓慢 服务器规格: -PHP5.2.1(我认为我们需要在5.3上升级以使用新的垃圾收集器) -Apache 2.2 -四核Xeon处理器@2,8 Ghz和4 GB DDR 3 RAM。 -XCACHE 1.3(我们几个月前添加了它) -Mysql 5.1(我们使用innodb作为引擎) -编码点火器框架 以下是我们迄今为止所做的工作以及我们

这是我在这里的第一个问题,关于一个特定的网站优化。 几个月前,我们为一个客户推出了一个社区网站

一切都很好,但现在这个网站变得越来越大,当页面加载时显示出一些缓慢

服务器规格:
-PHP5.2.1(我认为我们需要在5.3上升级以使用新的垃圾收集器)
-Apache 2.2
-四核Xeon处理器@2,8 Ghz和4 GB DDR 3 RAM。
-XCACHE 1.3(我们几个月前添加了它)
-Mysql 5.1(我们使用innodb作为引擎)
-编码点火器框架

以下是我们迄今为止所做的工作以及我们打算进一步做的工作:

除了xcache,我们并没有真正使用缓存机制,因为大部分内容都是实时的,除此之外,我们不想过早地进行优化,因为我们不知道在流量方面会发生什么。 另一方面,我们已经安装了memcached,我们希望实现一个基于memcached的缓存系统

关于数据库结构,我们的大多数表都达到了3NF,是的,我们有一些缓慢的查询(我们计划对其进行优化),但我认为,因为产生缓慢查询的表是用于博客评论(~44408行)/用户日志跟踪(~725837行)/用户评论(~698964行)等的表,这些都是相当大的表。目前,整个数据库的大小为697.4 MB

此外,以下是2011年1月的一些统计数据:
每月唯一访客:-127.124
每月独特视图:4.829.252
每月独特访问量:242.708

日平均值:
独特的新访客:7.533
独特的新视图:179.680

如果您需要更多详细信息,请告诉我。
非常感谢您的建议


谢谢。

当谈到性能问题时,并没有黄金法则或贴有标签的便笺首先告诉您与数据库有关。也许我可以建议你做性能评测,互联网上有很多免费和付费的工具可以让你这么做

首先从web服务器层开始,确保一切都正确完成,并尽可能优化

然后转到下一层(我假定这是您的数据库)。通常,从外行的角度来看,每当有人提到InnoDB MySQL时,我们都会假设创建了索引来优化和搜索操作。索引的使用也非常重要,因为您不希望索引错误并使事情变得更糟。我的建议是让DBA级别的人员使用登台环境进行故障排除

您可能会看到的另一个技巧是内容,从网页内容到数据库数据,确保只在需要的地方显示/保留数据,不要将不必要的信息存储到数据库中,并在网页上使用智能布局。在可用性和响应时间方面,缩短一两秒可能会产生很大的差异

除非我们有关于您的应用程序、其体系结构和环境的深入信息,否则很难在这里解释细节,但上面是人们用来解决此类事件的一些常用方向


祝你好运

根据统计数据,我认为你没有遇到负荷问题。。。凭直觉,我会先查看数据库。也许是个好的开始


但您确实应该首先对应用程序进行一些分析。与数据库相比,在应用程序中花费了多少时间。是否有一些应用程序方法需要花费大量时间,只需要一些调整?数据库查询是否编写得不高效?您需要更多或更好的数据库索引吗?

此网站拥有优秀的资源

提到的书都很好。这里列出的技术太多了,我们不知道您到目前为止尝试了什么。

一切看起来都很好——如果升级codeigniter是一个选项,那么新的codeigniter 2.0(reactor)增加了对memcache的支持(支持文件系统、APC和memcache的新缓存驱动程序)。假设您已经在使用xcache,这些新添加的内容可能值得一看

当缓存对象不足以满足我们的多域平台的巨大流量时,我们会向其投入更多的硬件——ram、服务器/数据库。然后,我们转向数据库集群来处理单帐户预测的重负载。现在从apache切换到nginx。。。这是一场永无止境的战斗,但对我们来说,有效的方法是对缓存内容进行智能化,增加服务器内存,然后在服务器之间分配负载

  • 缓存尽可能多的数据库调用。在我的CI应用程序中,我有一个很少更改的设置表,因此我会在不断查询设置表时缓存对它的所有调用
  • 缓存视图甚至控制器。我倾向于在CI应用程序中尽可能多地缓存,然后在文件更改时刷新缓存
  • 仅自动加载重要的库、模型和帮助程序。我见过人们自动加载多达10个库,再加上几个助手和一个模型。只有在使用数据库和会话库时,才真正需要自动加载它们

  • 关于第3点,您是否有可能自动加载config/autoload.php文件中的许多内容?这可能有助于加快速度,只在需要时在控制器中加载所需的内容,当然会话和数据库库除外。

    很抱歉,各位,我一直在忙着查找问题,我做到了

    嗯,问题主要是因为apache,我有一个接近300GB的访问日志,在午夜被解析以生成webalizer统计数据。大多数情况下,当这种情况发生时,网站运行非常缓慢。我禁用了域的webalizer,清除了日志,看到了什么,它又很快了,不管你访问它的时间

    我没有