标签: scalability

可扩展的 CouchDB 设置

我想迁移一个现有的应用程序,它大约有。1000 万条记录存储在 CouchDB 的关系数据库中。我喜欢 CouchDB 的一点是易于复制和快速缓存视图。我不喜欢的是写入和查看创建速度,这对于 1000 万个文档来说会非常慢。

我必须解决这些潜在瓶颈的一个想法是拥有三个 CouchDB 实例:

  1. 只写实例:这是主实例。我们的唯一真理。这里只允许更新、插入和删除。没有关于此实例的读取和视图。
  2. 仅视图创建实例:仅用于创建和缓存视图。此实例上没有读取或写入操作。
  3. 只读实例:通过复制视图进行读取访问。

实例 2 从实例 1 复制而来。由于不会有任何应用程序使用实例 2,因此可以在不影响生产应用程序的情况下创建新视图。

实例 3 从包含所有缓存视图的实例 2 复制而来。

这是一个可行的解决方案吗?

replication scalability couchdb

6
推荐指数
1
解决办法
1665
查看次数

Apache 在生产环境中的 Windows 上?为什么不?

“每个人”都知道 Apache 适用于 Linux/Unix,而在 Windows 上 IIS 是必经之路。

但是,我不是 Linux 专家,如果在生产环境中使用与开发过程中使用的设置相同的设置,那将是一种极大的解脱。我是一名独立开发人员,我正在努力使事情尽可能简单。我已经摆脱了其他问题,例如存储(-> 云)电子邮件(-> 邮戳)。

那么,当我将 Apache 放在来自 Rackspace 的 Windows 虚拟专用服务器中并将其用作PHP 项目的主要生产环境时,可能会发生什么真正的缺点?与不必学习不同操作系统的可能性相比,获得更多 VPS 资源的钱并不是什么大问题。

预计不会出现超大流量。我的 PHP 项目也可以相当优化。有一些繁重的脚本,但仅适用于内部(登录)用户。所有其他的都可以或多或少地静态提供。

windows php scalability apache-2.2

6
推荐指数
1
解决办法
5992
查看次数

用于扩展/扩展电子邮件存储服务器的典型方法是什么?

我试过的:

  • 我有两个电子邮件存储架构。新旧。

老的:

  • 多个 (18+) 1TB 存储服务器上的 courier-imapds。
  • 如果其中一个显示磁盘空间不足的迹象,我们会将一些电子邮件帐户迁移到另一台服务器。
  • 服务器没有副本。也没有备份。

新的:

  • dovecot2 位于具有 16TB (SATA) 存储和几个 SSD的单个大型服务器上
  • 我们将新邮件存储在 SSD 上并运行 doveadm purge 以将超过一天的邮件移动到 SATA 磁盘
  • 有一个相同的服务器,它有来自主服务器的最多 15 分钟的 rsync 备份
  • 高层/管理层希望在每台服务器上尽可能多地装入存储空间,以最大限度地降低每台服务器的 SSD 成本
  • rsync'ing 完成是因为 GlusterFS 在高小/随机 IO 下不能很好地复制。
  • 预计将通过配置另一如此庞大的服务器来完成扩展
  • 在面临旧架构中的磁盘紧缩问题时,将手动移动电子邮件帐户。

疑虑/疑虑:

  • 我不相信同步复制文件系统的想法适用于大量随机/小 IO。GlusterFS 还不能为我们工作,我不确定这个用例是否有另一个文件系统。这个想法是保持相同的对,并使用 DNS 循环进行电子邮件传递和 IMAP/POP3 访问。如果其中一个服务器因任何原因(计划内/计划外)宕机,我们会将 IP 移动到成对中的另一台服务器。
  • 在像 Lustre 这样的文件系统中,我获得了单一命名空间的优势,因此我不必担心手动迁移帐户和更新 MAILHOME 路径和其他元数据/数据。

问题:

  • 使用传统软件(courier-imapd / dovecot)进行放大/缩小的典型方法是什么?
  • 存储在本地安装的文件系统上的传统软件是否会阻碍以最小的“问题”进行横向扩展?是否必须重写(部分)这些以使用某种对象存储 - 例如 OpenStack 对象存储?

linux storage email-server replication scalability

6
推荐指数
1
解决办法
2179
查看次数

内存缓存滞后

让我先说这是本主题的后续问题。

通过将 memcached 服务器从 Solaris (SmartOS) 切换到 Ubuntu 来“解决”这个问题。现在我们已经将负载增加了大约 5 倍,并且再次遇到问题。

我们正在运行一个大约每分钟处理 1000 个请求的站点,每个请求以大约 3 次读取和 1 次写入命中 Memcached。所以负载大约是每秒 65 个请求。缓存中的数据总量约为 37M,每个键包含的数据量非常小(JSON 编码的整数数组,小于 1K)。

我们在这些页面上设置了一个基准测试脚本,并将数据输入 StatsD 进行记录。问题在于,Memcached 需要很长时间才能响应的峰值。这些似乎与流量高峰无关。

来自 StatsD 的执行时间

什么可能导致这些尖峰?为什么 memcached 会占用一秒钟的时间来回复?我们刚刚启动了第二台服务器以放入池中,它在峰值的频率或严重性方面没有任何明显的差异。

这是服务器上 getStats() 的输出:

Array
(
    [-----------] => Array
        (
            [pid] => 1364
            [uptime] => 3715684
            [threads] => 4
            [time] => 1336596719
            [pointer_size] => 64
            [rusage_user_seconds] => 7924
            [rusage_user_microseconds] => 170000
            [rusage_system_seconds] => 187214
            [rusage_system_microseconds] => 190000
            [curr_items] => 12578
            [total_items] => 53516300
            [limit_maxbytes] => 943718400
            [curr_connections] => …
Run Code Online (Sandbox Code Playgroud)

ubuntu php scalability memcached memcache

6
推荐指数
1
解决办法
554
查看次数

负载均衡器说明

我试图弄清楚 facebook/youtube 等网站的负载平衡究竟是如何工作的,但我几乎没有问题。因此,在大量阅读之后,我发现负载平衡看起来像这样:当负载平衡器应该是一个服务器时,它会在服务器之间分配流量。

所以这就是如何理解负载平衡

我的问题是:如果负载平衡器是在其他服务器之间分配流量的单个服务器,那么像 facebook/youtube 这样的网站如何每秒处理 50,000 多个请求?如果负载均衡器是单个服务器,它不会死,他如何能够路由 10gbps 或更多的流量?另外这个负载平衡器如何知道视频 XXXX(例如)位于哪个服务器上?

scalability load-balancing

6
推荐指数
1
解决办法
347
查看次数

就访问量而言,低、中、高流量网站是什么?

我们经常在互联网上看到一些著名的网站,例如 Facebook、Google、Yahoo……每个月都有数亿独立访问者。

但是对于较小的(或者我应该说通常的)网站来说,数量级是多少?
有人可以举例说明什么是小型、中型和非常高的流量,例如每月的访问范围。

我只是想有一个规模并能够对网站进行分类,目前我没有任何参考。

traffic scalability

5
推荐指数
1
解决办法
2万
查看次数

扩展我的 Web 应用程序以应对大量用户的最佳策略是什么?

我想就如何制定扩展我的 Web 应用程序的策略获得一些建议/最佳实践。我在这里胡说八道并展示我有限的知识,但想填补我的知识空白。自己尽可能多地学习这方面的知识很诱人,但意识到我需要寻求一些外部帮助,因此作为一个一般性问题,最好知道最容易外包的事情是什么。

我的背景 - 我是一名开发人员,主要从事用户界面的开发工作,并一直在使用 Flash 和 PHP 开发应用程序的功能,该功能可以让用户上传图像和视频以进行在线共享。

系统架构如下——

  1. 一个单一的网络服务器,它也充当数据库服务器 (MySQL)。该服务器位于受信任且可靠的托管公司的托管托管包中。网络服务器提供 PHP 页面和 Flash SWF,它们是主要的 UI 组件
  2. Amazon S3 存储桶,用于存储用户的图像、视频和音频文件。
  3. 用户界面组件要么是 PHP 页面,要么是 Flash SWF,例如图像和视频是通过 Flash swfs 查看的,Flash swfs 通过 AMFPHP 服务查询数据库以获取要加载的图像和视频文件的 URL。然后从 Amazon S3 存储桶接收这些数据。另一个 FLash SWF 处理上传和 POSTS 文件到在 Amazon Cloud 上的 EC2 实例上运行的 PHP 脚本。
  4. 用于管理图像、视频和音频上传的上传服务器。这是一个运行在 Elastic Load Balancer 后面的 Amazon EC2 实例,当它看到 CPU 容量达到 80% 时会添加更多实例。
  5. 我们还使用也在 Amazon EC2 上运行的第三方服务来对视频文件进行转码。

所以在很大程度上,我认为事情已经设置好了,可以扩大规模。但我没有如何扩展或管理高流量 Web 应用程序的经验,因此将依赖我们的 Web 服务器托管公司来管理 Web/应用程序服务器和数据库服务器的可扩展配置的设置。

硬件/架构扩展-

据我了解,这里的第一步是将 Web 服务器和数据库分开并让数据库服务器独立运行,将 Web 服务器放在负载均衡器后面,并最终为数据库服务器设置主/从配置。我应该要求我的网络托管公司做什么?这样做有什么问题?对我的 AMFPHP …

database scalability web-server web-applications best-practices

5
推荐指数
1
解决办法
5178
查看次数

Amazon RDS 实例性能不佳

我正在对由小型 RDS 数据库实例支持的 PHP Web 应用程序进行一些负载/压力测试。当我用大约 50 个并发 Web 请求访问网站时,RDS 数据库停止响应所有连接请求大约 10 秒(来自我的 Web 应用程序,以及来自我使用来自其他机器的命令行 mysql 客户端)。PHP给出以下错误:

Could not connect to database. Lost connection to MySQL server at 'reading initial communication packet', system error: 110

我认为这只是 Web 应用程序中占用资源的糟糕/缓慢的 SQL,但这种性能似乎非常糟糕,所以我挖得更深一些。我在 EC2 微型实例上设置了另一个 mysql 服务器,该实例具有相同版本的 mysql、数据库克隆和默认配置。EC2 实例的性能好几倍(延迟和发出嘶嘶声之前的并发 Web 请求数)。

我的 RDS 实例和我的 EC2 实例使用相同版本的 mysql,具有默认配置,尽管我尝试调整 RDS 实例以增加各种缓冲区、max_connections 和 max_connection_errors,但都无济于事。

是什么赋予了?为什么具有更好的“磁盘”I/O、3 倍 RAM 和更多专用 CPU 的 RDS 实例会被一个弱小的 EC2 实例胜过?

我怀疑这是 AWS 怪癖或 MySQL/RDS 配置问题 - 希望任何一个主题的专家都可以解决这个问题......谢谢!

mysql scalability amazon-ec2 amazon-web-services rds

5
推荐指数
1
解决办法
4435
查看次数

多个 DNS 名称和 IP 地址使 Exchange CAS 阵列中的负载平衡更有效

tl;博士问题

CAS 服务器偶尔会获得一两个经过 NAT 处理的 IP 地址,这些 IP 地址背后有数百个用户。这对可扩展性不利。

tl;dr 解决方案

让经过 NAT 的 Outlook 客户端连接到多个 DNS 名称/IP 目标。在负载均衡器中使用它,可以减少 NAT 问题。

更多信息

我们的大多数 Exchange 客户使用 RPC/HTTPS 和 Outlook Anywhere。我们的许多客户端在单个 NAT 地址后面成百上千。

这会导致负载平衡器将大量 NAT 用户群发送到同一个 CAS 服务器。CAS 服务器然后达到 100% CPU 并且无法为最终用户提供服务。

我的解决方案

由于无法将 cookie 负载平衡附加到 NetScaler 中的 Outlook Anywhere,我认为添加更多 DNS 名称可能会很好。我来解释一下。

在给定的 DAG 中,我使用这些 DNS 名称:

  • NYCAS01.company.com
  • Autodiscover.company.com
  • 电子邮件.company.com

如果我能够更改它以便我为大部分流量使用更多 DNS 名称会怎样:

  • NYExGroup1.company.com NYExGroup2.company.com NYExGroup2.company.com
  • Autodiscover.company.com
  • 电子邮件.company.com

我将通过将每个 Exchange 数据库上的 RPC 服务器属性设置为“NyExGroupX.company.com”的属性并设置相应的外部 IP 来完成此操作。当然,这意味着我还需要更新我的外部证书。

我很确定这种配置将保证诸如“SomeLargeCompany”之类的 NAT 源将连接到多个“组”DNS 名称。这意味着负载均衡器将能够使用多个目标 IP 并更均匀地分配流量。

题 …

scalability load-balancing outlook-anywhere exchange-2010 netscaler

5
推荐指数
1
解决办法
1147
查看次数

Windows 中的 RSS(接收端缩放)是否被认为不稳定?

当要求客户在他们的数据中心启用 RSS 以提高网络性能(每秒 UDP 包的速率非常高)时,我被告知他们通常将其关闭,因为在过去的各种问题之后,微软和硬件供应商(我相信是 HP)经常会要求他们关闭 RSS,因为它可能会破坏稳定。

这个花絮,以及尽管 RSS 在 Windows 2008 中默认全局启用(我在 2008 R2 中验证过),但在 2012 年(在 2012 R2 中验证)默认情况下已更改为“禁用”的额外观察结果,让我相信不稳定的说法可能有一定的道理。但是谷歌在这里似乎不是我的朋友。在有关Windows 2012 中 RSS 改进的 TechNet 页面上,RSS似乎很稳定(我自己在非常高规格的 Win2012R2 系统上对扩展 UDP 接收的测试证实了这一点)并且仍然是扩展的方式。

这里有没有人对 RSS 和稳定性有好的/坏的经验可以分享,或者有一些关于它的问题的指针?

networking windows-server-2008 scalability performance-tuning windows-server-2012

5
推荐指数
0
解决办法
1296
查看次数