Articles of 可伸缩性

如何减less我的服务器上的RAM使用情况?

我最近推出了一个非常受欢迎的网站,但我在扩展性方面遇到了麻烦。 我的网站大量使用FFmpeg,并且在高峰时间内RAM使用率快速达到2 GB点,交换文件开始使用。 CPU使用率也开始上升。 用户抱怨网站速度很慢。 他们这样说是因为所有的FFmpeg实例运行速度都很慢,因为同时运行的是多个实例。 用户实时使用我的服务器上的FFmpeg。 有什么我可以考虑或做的,以减轻服务器和内存的使用刚刚射击? 也许有比FFmpeg(!)更好的东西。 是唯一的解决scheme“投入一些现金”在一个更强大的服务器? 我已经提供了很less的信息,请多询问一下,所以这个问题是可以解决的。

负载均衡器说明

我试图找出像Facebook / YouTube的网站的负载平衡如何工作,但我有几个问题。 所以很多读后,我发现负载平衡看起来像这样:当loadbalancer应该是一个服务器,谁分开服务器之间的stream量。 我的问题是:如果负载均衡器是单服务器,其他服务器之间的stream量分裂,像facebook / youtube这样的网站每秒可以处理超过50,000个请求吗? 如果负载均衡器是单服务器将不会死,他如何能够路由10Gbps的stream量或更多? 另外,这个负载平衡器如何知道XXXX(例如)在哪个服务器上?

需要关于为moodle构build可扩展架构的build议

我正在考虑devise一个基于Moodle的教育网站的架构,它最初将服务于数千个用户,但是需要能够成长为支持几个国家的数十万到数百万用户。 我正在考虑一个负载均衡器来分发请求到几个Web服务器。 Web服务器可以被一些静态服务和一些服务dynamic内容分割。 然后写入一个mysql主节点并从slave节点读取。 什么样的负载均衡器可以很好地与moodle配合使用,我应该从其中一个供应商那里获得一个硬件负载均衡解决scheme,还是使用像LVS或者反向代理这样的开源解决scheme来构build自己的解决scheme? 我打算首先使用apache服务器来为网页提供服务,然后当负载变得更高时,将其分解为静态内容的lighttpd webserver和dynamic内容的apache应用程序服务器。 像gzip压缩,鱿鱼caching,memcache的东西也将被部署,如果需要的话。 对于Web服务器硬件,我应该使用one-u单插槽服务器还是刀片解决scheme? 哪一个最终会更便宜地运行和扩展? 超微有一个有趣的产品,1U机箱中的双服务器和2U机箱中的4台服务器与infiniband。 有没有人在这里试过这些服务器? 对于存储,我应该使用SAN还是Sun统一存储7000等存储服务器就足够了。 对于一个mysql集群设置,我应该有两个不同的存储系统,用于主节点写访问和另一个奴隶读? 还是应该所有的节点都有独立的存储? 由于这个网站的读取操作可能会比较繁重,因此应该如何考虑mysql群集和存储设置呢? 对于pipe理部分,我打算使用dsh,ganglia,nagios,splunk,kickstart。 对于备份,我计划使用LTO磁带自动加载器。 这个网站主要用于亚洲地区,晚上会有几个小时的低stream量。 备份mysql群集的最佳方法是什么? 我是否可以暂时禁用写入并取出主服务器来执行备份? 请告诉我,如果您有设置这种可扩展的网站的经验,我的经验大部分是在使用大型unix盒子,或者更小的独立unix / linux盒子。 所以这种扩展实现对我来说是第一次。 谢谢 罗伯特。

可扩展的CouchDB设置

我想迁移一个现有的应用程序, 存储在关系数据库中的1000万条logging到CouchDB。 我喜欢CouchDB的东西是简单的复制和快速caching视图。 我不喜欢的东西是写入和视图创build的速度,这将是非常缓慢的1000万份文件。 我必须解决这些潜在瓶颈的一个想法是有三个CouchDB实例: 只写实例 :这是主实例。 我们单一的事实。 这里只允许更新,插入和删除。 这个实例没有读取和没有视图。 仅查看创build实例 :仅用于创build和caching视图。 这个实例没有读或写。 只读实例 :通过复制视图进行读取访问。 实例2从实例1复制而来。由于不会有任何使用实例2的应用程序,因此可以在不影响生产应用程序的情况下创build新的视图。 实例3从包含所有caching视图的实例2复制而来。 这是一个可行的解决scheme?

放大/缩小电子邮件存储服务器的典型方法是什么?

我试过了: 我有两个电子邮件存储架构。 旧的和新的。 旧: 快递 – imapds在几个(18+)1TB存储服务器上。 如果其中一个出现磁盘空间不足的迹象,我们会将一些电子邮件帐户迁移到另一台服务器。 服务器没有副本。 没有备份。 新: dovecot2在一台配有16TB(SATA)存储和一些SSD的巨大服务器上 我们将新邮件存储在固态硬盘上,并运行doveadm清除function,将超过一天的邮件移动到SATA磁盘 有一台相同的服务器,它具有来自主服务器的最长-15分钟的rsync备份 为了最大限度地降低每个服务器SSD的成本,上级/pipe理人员希望在每台服务器上尽可能多地存储存储空间 rsync正在完成,因为GlusterFS在那个高小的随机IO下复制得并不好。 预计将configuration另一对如此巨大的服务器 在面对像旧架构那样的磁盘紧缩问题时,手动移动电子邮件帐户将会完成。 关注/疑虑: 我不相信同步复制的文件系统理念适用于繁重的随机/小IO。 GlusterFS还没有为我们工作,我不知道这个用例是否有另一个文件系统。 这个想法是保持相同的配对,并使用DNS循环来发送电子邮件和IMAP / POP3访问。 如果服务器出于某种原因(计划/未计划)而出现故障,我们会将IP移到另一台服务器上。 在像Lustre这样的文件系统中,我获得了单一名称空间的好处,因此我不必担心手动迁移帐户并更新MAILHOMEpath和其他元数据/数据。 问题: 用传统软件(courier-imapd / dovecot)扩展/扩展的典型方法是什么? 传统的存储在本地安装的文件系统上的软件是否构成一个障碍,以最小的“问题”来扩展? 是否必须重新编写(部分)这些对象来使用某种对象存储 – 比如OpenStack对象存储?

如何在我的networking服务器上实现每秒500K的请求?

我最近给自己一个新的专用服务器,我试图挤出最大的性能,为了好玩和学习。 我正在尝试实现这个服务器每秒钟可能处理的最大请求数,并且在这里提到500K请求/秒 – http://lowlatencyweb.wordpress.com/2012/03/20/500000-requestssec-modern-http-servers -are快速/ 服务器细节 英特尔®至强®E3-1270 4核(8 HT)x 3.4 GHz 内存24 GB DDR3 ECC 硬盘空间2,000 GB(2 x 2,000 SATA)RAID软件RAID 1 蓝100mbps OS Centos 6.3 64位 Nginx的 我能够达到只有35K请求/秒的静态TXT文件。 我正在同一台机器上运行基准testing。 我知道网卡的限制和networking开销 ab -n100000 -c200 http://localhost/test.txt 更新 – 165K请求/秒 我尝试了另一个称为wrk的基准testing工具,它给了我165K个请求/秒。 非常酷! 更新2 – 250K请求/秒 nginx.conf ####################################################################### # # This is the main Nginx configuration file. # # […]

在SMP系统上使用多队列网卡实现multithreading

数据包如何从networking接口队列调度到CPU,然后再转发到线程进行处理? 什么需要考虑到如何在队列,硬件中断vs softirqs,CPU /内存/应用程序/线程局部性,multithreading与多进程守护进程中散列数据包,以避免尽可能多的数据包重新计划/复制尽可能? 我有一个使用Linux 2.6.32(yes,old)的Debian amd64上运行16个本地线程的multithreadingnetworking守护进程(比如Unbound resolver),因此应用程序负载分布在16个CPU上。 网卡是bnx2(BCM5709S),支持8个MSI-X rx / tx队列。 每个队列的IRQ通过在/ proc / irq / n / smp_affinity中静态映射中断关联被分配给一个单独的CPU(irqbalance从来没有做好),队列哈希types(RSStypes)是默认的(src + dst ,TCP sport + dport),使用默认的散列键。 所有这些都有助于传播负载,但不是平均的:通常有一个应用程序线程执行两倍于其他线程的工作(=每秒请求数),一个CPU(可能是处理该特定线程的CPU)的softirq速率是其他线程的两倍的CPU。 CPU已经启用了超线程,但是我还没有做任何事情来传播负载到'真正'的核心(我真的应该)。 Linux提供了一个相当全面的networking缩放文档 ,但我错过了一些空白: 该文件说这关于RSSconfiguration: 如果设备支持足够的队列,则典型的RSSconfiguration将是每个CPU具有一个接收队列,否则对于每个存储器域至less一个接收队列,其中存储器域是共享特定存储器级别的一组CPU(L1,L2 ,NUMA节点等)。 问:如何确定我的服务器的CPU /caching/内存域configuration? 有关接收stream量转向(RFS)的信息似乎回答了一些关于将数据包传送到正确的CPU /线程的问题: RFS的目标是通过将数据包的内核处理引导到消耗数据包的应用程序线程正在运行的CPU来增加datacache hitrate。 问:在DNSparsing的情况下,通常有一个查询包和一个应答包。 使用multithreading守护进程,只有一个线程运行bind()+ recvfrom(),因此在将工作调度到其他线程之前,必须处理所有新的传入数据包? 这个特殊用例会从分叉操作中受益吗(每个CPU有一个进程)呢? 问:接收stream量转向后,通常最适用于multithreadingTCP守护进程? 问:你将如何确定是否进行multithreading或多进程操作? 显然有共享内存和数据结构,资源争夺等,但我在考虑包stream和应用程序监听器。 问:如果没有接收stream量转向或简单的UDP服务,数据包是否能到达“错误的”CPU,因此会被重新安排到“正确的”CPU? 这会触发一个NET_RX softirq? 问:NIC队列和CPU之间是否有NET_RX softirq? CPU和侦听线程/进程之间是否还有一个? 如果接收线程将数据包安排到工作线程,是否还有另外一个可能性? 太糟糕了,Ben Hutchings的netconf […]

如何自动扩展MySQL服务器?

我运行的网站stream量激增,因为这种情况下,自动缩放解决scheme是非常有利可图的。 目前Web服务器能够水平自动扩展,但瓶颈在MySQL服务器上。 我曾尝试使用Amazon RDS多可用区,但是12 GB数据库需要15分钟才能升级,并且需要几分钟的停机时间。 当我已经知道在某个特定时刻将会发生交通高峰的时候,这已经有了很大的帮助。 我也考虑过Xeround。 这可能是最好的解决scheme,虽然对于这个大小的数据库来说是相当昂贵的。 无论如何,这不是一种select,因为我依法需要数据库在欧盟。 我已经阅读了关于Scalr,但不知道这可能是有益的,如何。 我已经看到,许多云托pipe提供商提供垂直扩展解决scheme,我认为它有0停机时间(不知道这是否真的有可能,据我所知,他们使用Xenpipe理程序)。 这可能是一个解决scheme,但我不知道它是否没有宕机,以及MySQLconfiguration(以及操作系统上的其他许多东西)如何能够在没有停机的情况下升级。 我已经尝试过使用MySQL从服务器,但是根本没有帮助。 我正在使用帮助很多,但这是不够的memcache。 我需要升级是因为写入,而不仅仅是因为读取。 有什么build议么? 先谢谢你

postgreSQL vs Cassandra vs MongoDB vs Voldemort?

决定哪个数据库? 任何比较? 现有的:postgresql 问题 横向不容易伸缩。 需要分片等 聚类不能解决数据增长问题 寻找:任何容易横向扩展的数据库 卡桑德拉(Twitter使用?) MongoDB(迅速普及) 伏地魔 其他? 为什么? 数据与雪球效应增长 现有的postgresqllocking表格等定期对真空任务 目前存档数据是很好的 涉及现有档案,真空,…的人员互动定期处理 需要一个'设置它。 算了吧。 当数据增长更多时,只需添加另一台服务器。 types的解决scheme

为超过64k的websockets规模HAProxy

我们正试图devise一个能够处理超过64k的websocket的架构。 我们首先尝试与亚马逊ELB,但其devise不允许意外的交通高峰或websocket。 (TCP模式意外地超时了websockets) 使用HAProxy,这些限制不适用,但我们将被限制在HA和后端服务器之间维护的约64k个WebSockets。 想到多种解决scheme: 多个HAProxy实例,负载平衡与DNS(Route53有一个加权选项) 两个HAProxy实例Keepalived,多个内部IP地址(不知道它是否可行) 有没有更好的方法来做到这一点?