让我们考虑一下如下的情景: 一个基于LAMP堆栈并部署在共享主机上的小型networking博客。 突然它在一天之内变得stream行起来,并且每天得到百万次点击。 由于开发者没有考虑高stream量,导致服务器停机和崩溃。 什么是这种情况下的快速解决? BTW我知道云服务器我可能能够添加更多的内存或CPU,以避免像在亚马逊EC2。
如果仅在Windows 2008服务器或Windows 7 TCP Windows缩放中find此文章。 http://8help.osu.edu/3253.html 是否有任何其他信息可以用来修改registry来修改TCP窗口大小?
我正在制作一个一对一的聊天应用程序。 它使用StropheJS通过BOSH连接到Ejabberd服务器(使用ejabberd的默认连接pipe理器)。 我们面临的主要问题是,有时消息需要很长时间才能到达另一端(约30秒左右),否则很快就会到达另一端。 像这样的东西 – 用户A发送消息 用户B立即收到 —- [更多即时消息交换] —– 用户A发送消息 B没有收到消息 用户A发送另一个消息 B仍然没有收到消息 … … (20-30秒之后)B一起接收两个消息(不是作为单个消息,而是在它们之间没有任何明显的时间间隔) 除了聊天之外,Web应用程序的其他部分还可以正常工作。 我很难弄清楚什么是确切的瓶颈。 它运行在Ubuntu 10.04实例上(2 GB内存+ 4 GB交换)。 我应该提到的一件事情是,一台机器用于托pipe所有的东西 – apache2,mysql,ejabberd,rabbitmq,mongodb,消息队列工作者以及由apache2使用mod_wsgi服务的python web应用程序。 此外,apache还提供一些(很less)静态文件,并将BOSH请求代理到ejabberd。 在任何时候,Apache的最大进程数(大约40),并使用700-800 MB的内存,所以我的猜测是,它正在做的大部分工作。 每天平均提供20万个请求(这个数字是从访问日志中获得的) 我们已经移动了CDN提供的静态文件(它显着提高了性能),并且还logging了缓慢的查询,并通过创build索引进行了优化,这些索引再次导致整体性能提升,尽pipe我打算明天再次做这个练习。 是否有系统的方法来解决瓶颈问题? 我也很困惑, 是否切换到nginx会提高性能 无论是把东西搬到自己的服务器上,他们可能会在单机上竞争资源? 升级机器上的内存 负载平衡的http服务器(虽然我有点怀疑,因为New Relic显示在请求排队几乎可以忽略不计的时间。) 可以在前端/后端上做什么样的测量来获得想法? PS:为了理解服务器pipe理/体系结构/调优的基础知识,在书中提供一些build议也是非常好的。
我正在构build基于回合的游戏的后端。 我的经验主要是一盏灯; 我在一个节点端项目上涉足nginx。 我刚刚阅读了Twit Pic的Stephen Corona Scaling PHP应用程序。 他build议在Apache上使用nginx服务器。 他说他的ubuntu机器已经打开了32768-61000个端口。 在AWS上,我是否需要修改我的安全性进行分组以允许访问这些端口? 我如何确保nginx充分利用这个configuration? 更新: 我预计我的大部分要求是在443港口,这就是为什么我对他build议开放更多港口的build议感到困惑。 这是他所做的build议 net.ipv4.ip_local_port_range ip_local_port_range定义系统上可用端口的范围。 在我的股票Ubuntu安装,它被设置为32768-61000。 增加范围以允许更多的连接。 可用端口的数量限制了同时开放连接的数量。 请记住,即使在连接closures之后,它仍然在TIME_WAIT状态下吃一个端口(虽然我们用下面的一些设置来减轻这个影响)。 sysctl-wnet.ipv4.ip_local_port_range="10000 65535" vi /etc/sysctl.d/haproxy-tuning.conf net.ipv4.ip_local_port_range=10000 65535
假设我在两台服务器(Solaris,4个CPU,每个64 GB的RAM)上运行一个集群,并且两个Weblogic服务器节点都在运行。 堆大小在这些节点上是最大的,因此每个服务器大多数时间运行40+ GB的可用内存,每个服务器平均具有30%的CPU利用率。 假设应用程序水平地正确扩展,在同一硬件上添加更多的应用程序服务器节点以利用未充分利用的资源是否合理? 2 GB JVM堆限制实际上限制了一个节点可以提供的最大请求数,对吗?
我正在寻找升级我的网站服务器之一。 该网站目前每天执行大约20万次sql查询,而且这种增长速度非常快。 现在IO吞吐量是一个真正的问题 ,所以我的想法是将各种数据库移动到自己的磁盘对上。 我的想法是做这样的事情: configuration 磁盘1和磁盘2 / RAID 5,6或10(SAS或SSD) – 数据库1 磁盘3和磁盘4 / RAID 5,6或10(SAS或SSD) – 数据库2 磁盘5和磁盘6 / RAID 5,6或10(SAS或SSD) – 数据库3 磁盘7(SSD) – 事务日志 磁盘8(SSD) – 事务日志 我的经验不足,所以有几个问题: 1)首先,上面看起来很愚蠢吗? 2)有什么我应该注意的RAID控制器,例如。 使用SSD时的带宽吞吐量? 3)是否所有SSD磁盘创build均等? 我捡到线索说某些types是不合标准的? 4)我假设对于简单的两个磁盘镜像,任何这些RAID级别都可以? 错误的假设? 5)任何其他的调整,使这个configuration更好? 我的网站是高度事务性的,但数据库不是那么大,目前只有几个演出。 所以我的主要缩放需求是IO,而不是大小。我会在盒子里扔很多内存以及在内存中放置更多的索引等。 谢谢戴夫
我有1个实例。 如果3分钟的延迟时间超过1秒,则会增加另一个实例。 而这里出现的问题是:50分钟后(因缩放冷却)这个二次终止。 而且,如果负载仍然很高,延迟会跳回到1秒以上。 但是因为缩小冷却时间,不能再加一个新的! 是否可以单独设置和降低冷静? 或另一个build议来解决这个问题? 冷却时间减less不会有帮助,情况会更加频繁地死亡,所以应用停机时间依然很大。
我有两个运行Tomcat服务器的EC2实例。 我用豆茎部署了我的战争。 我的负载均衡器具有在“实例”选项卡下列出的两台EC2机器。 我正在尝试做一些负载testing。 当我生成负载并使用负载平衡器URL命中时,请求只发送给一个实例(在所有运行期间都不一样)。 另一个实例是完全空闲的。 即使在我的豆茎自动缩放设置中,我已经设置最大和最小实例数为2,这确保了两台机器始终处于运行状态。 有人可能会提出什么可能是问题。 非常感谢。
我知道这个问题没有直接的答案 – 取决于规格等等。但是,您希望服务器处理的同时请求的数量级是多less? 目前,在超过10个线程同时运行请求之后,我们的服务器开始真正放慢速度。 这是平常的web应用程序的正常吗? 编辑:我目前不需要咨询。 我甚至不负责与该服务器有关的任何事情。 我告诉我的老板,我认为一个简单的web服务器不能处理10个以上的并发线程是不正常的,他说我应该做一个快速的调查。
我不太了解服务器,但是我知道在硬件方面可以通过很多方法提高运行Web应用程序的性能。 例如,从一台服务器开始,您可以: 将数据库移到另一台服务器上。 将静态文件移动到CDN上 在负载均衡器后面使用多个Web服务器。 但是,如何扩展数据库服务器呢? 你可以有多个服务器运行相同的数据库? 如果是这样,通常如何工作? 我了解负载平衡器/多个Web服务器如何工作,但是可以将相同的方法应用于数据库服务器吗?