【问题标题】:Scaling for TYPO3 siteTYPO3 站点的缩放
【发布时间】:2012-02-23 04:32:31
【问题描述】:

客户要求我提供一个基于 TYPO3 的网站,其参数如下: - 少量内容(约50页) - 很少改变频率 - 平均可用性约为 95%/天 - 20%的页面被限制,登录后才可用 - 不需要花哨的 Typo3 扩展或其他东西(只有 Typo3 核心) - 中等大小的页面 - 仅包含有限的数字资产(图像等)

我需要构建一个能够为多达 1000 个并发用户提供服务的基础架构。假设平均思考时间为 30 秒。这将导致每秒 33 个请求。

基础设施是什么样的?

我知道系统扩展是一项高度个人化的任务,具体取决于系统的实现并需要测试,但我需要首先指示从哪里开始(单个服务器、将组件分离到不同的服务器......)。

有什么想法吗?

【问题讨论】:

  • 这个题目太复杂了,给你一个有价值的答案。但是,我首先会专注于优化 TYPO3 网站的性能,如果还不够,那么我会专注于问题的系统方面。所以谷歌搜索“TYPO3 性能”。 3 个关键字可以帮助您专注于正确的事情:eAccelerator静态文件缓存memcached
  • 不要使用 eAccelerator,而是使用 xCache 或 APC。下面解释静态文件缓存。不要使用 memcached 作为缓存后端,而是使用 APC 或 Redis(取决于您的 PHP 设置)。
  • @StephenKing:eaccelerator 是 php 缓存而不是数据库缓存。他应该另外使用 xCache 或 APC 以及 memcached 和 Redis。
  • 我知道 eAccelerator 是什么。如果使用错误的选项编译它(并且 PHPdoc cmets 被剥离),它不再维护并且很容易引起问题。所以使用 (xCache||APC) 作为字节码缓存加上 (APC||redis) 作为缓存后端。 Memcached 作为缓存后端会导致问题,如果空间不足。见wiki.typo3.org/Caching_framework

标签: php apache content-management-system typo3 infrastructure


【解决方案1】:

更简单的解决方案是EXT:nc_staticfilecache。这会将静态页面保存为 HTML,并且您的 Web 服务器会通过重写规则自动传递它们(如果是 Apache,则通过 mod_rewrite)。这对于静态内容非常有效,应该已经使您能够执行 >100req/s。

更奇葩的方式是使用Varnish Cache。 Varnish 是一个反向代理服务器,它将您的网站内容保存在内存中,并且可以在专用主机上运行。如果您正确配置它(发送正确的缓存标头!),它会为您提供线路速度(大约百万请求/秒)。还有一个 TYPO3 扩展名moc_varnish,例如当 TYPO3 中的页面发生更改时,清除清漆缓存。还支持边缘侧包括存在于例如仅从 TYPO3 检索用户特定数据并使用清漆缓存中页面的静态部分(除了“Welcome user Foo Bar”.. ;))。

如前所述:不要忘记为您的资产配置正确的缓存标头(过期等)。这已经从您的网络服务器中移除了一些负载。

【讨论】:

  • 顺便说一句:您的客户是否真的期望有 1000 个并发访问者,或者他只是想像会有那么多? ;-)
  • 不,我真的不认为会有那么多,但这是合同的基础;-)
  • 在我看来,代理的需要尚未得到证实 - 但信息很好,所以 +1。
【解决方案2】:

很有可能,已经做了这样的事情。您至少需要一台具有 >= 8GB RAM 的专用服务器。

如果我们谈论的是基础设施,那么最小的组合是:

  • nginx/Varnish 用于前端/负载平衡
  • Apache HTTP 服务器
  • MySQL 可以在独立服务器上,也可以集群

在这种情况下,性能优化非常重要。

一些进一步阅读的链接:

【讨论】:

  • 为什么不用 nginx 或 lighttpd?阿帕奇很复杂,而且是一头野兽。为什么要使用专用服务器?公里更实惠?
  • Apache 有点重,是的,但它有很好的功能基础,谢谢,可以调整以避免过载。可以使用nginx,是的。什么是“公里”,对不起?
  • 这是一个错字。我的意思是 KVM,请参阅此处en.wikipedia.org/wiki/Kernel-based_Virtual_Machine。您可以更好地控制客人。例如,您可以更改内核参数并编译内核。
  • 如果您需要这样的内核个性化,何乐而不为。但使用虚拟化可能会增加一些性能开销。
【解决方案3】:

我会将它放在单个专用服务器(或指定的 VPS)上,但可能会将所有静态资产保存在第三方 CDN 上,这样您就可以专注于动态内容。我不知道 Typo3,但看不出为什么你不能在同一台服务器上使用这种级别的数据库 - 肯定会有各种缓存选项。或者考虑使用云服务器,因此如果您需要更多功能,只需添加更多资源即可。

编辑:我认为构建一个可扩展的架构并不是一个好主意,例如代理服务器和所有这些东西。如果它很慢并且你发现你真的无法应付一台机器,那么就扩大规模。我认为,考虑到您的预期流量,您可以使用更简单的架构。

【讨论】:

    【解决方案4】:

    我会研究虚拟 sserver 或 ksm 以及良好的 mysql 和 php 配置。当我有一个 ksm 时,我会调整 Linux 并使用 iptables 进行流量整形。专用的根服务器会很好,但它很昂贵。然后我会考虑使用带有 eaccellerator 和 memcache 的 nginx 或 lighttpd 网络服务器。如果这没有帮助,我会尝试使用优化标志编译 php 和 mysql,或者我会尝试使用英特尔 C 编译器编译它。 ICC 可以比 gcc 更好地优化 C 代码。如果服务器有很多内存,我会使用 ramdisk。

    【讨论】:

    • 对不起,错误的答案恕我直言。不要试图调整操作系统。从应用程序(TYPO3 + PHP)本身的良好设置开始。
    • @StephenKing:你应该学会阅读。我没有办法调整系统,但它在 Linux 中很常见,如果你有办法,为什么不呢?
    • 他正在寻求一个 Web 应用程序的解决方案。你为什么指望他编译服务器软件?也许他正在使用托管服务器、共享主机,或者有可能执行此操作的系统管理员。他可能会因为糟糕的 TYPO3 配置而破坏所有性能,但他无法通过优化的二进制文件或 ramdisk 来解决这个问题。
    • @StephenKing:我已经修正了答案并删除了代理。
    猜你喜欢
    • 2017-08-27
    • 2019-08-14
    • 2014-06-14
    • 2017-02-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多