问题标签 [high-traffic]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
nginx - 我应该为高流量网站使用什么虚拟主机设置?
我对处理高流量网站相当陌生,我正在寻找一种能够很好地扩展到未来的设置。
我的网站目前使用一个主要脚本来提取数据并将其存储到数据库中。网站的其余部分主要是从数据库中展示这些数据。
我一直在研究使用 Amazon Web Services (EC2) 或 Google Compute Engine 运行主脚本的可能性。然后将该数据传输到更典型的网络托管服务。我不确定我需要担心的一件事是负载平衡,我已经看到使用 NGINX 进行负载平衡可以帮助提高性能。
我的目标是让网站在 99.99% 的时间内启动并尽可能快地执行脚本。如果出现问题,最好有一个很好的支持。
欢迎任何想法、意见或建议。我正在尝试学习如何处理这个问题,因为我有几个其他网站目前正在增长,并且在不久的将来可能需要这样的设置。
谢谢!
php - 高流量 - 设置相同 memcached 密钥的多个请求?
我正在设置 memcached。我有几个关于高流量和更新/设置密钥的最佳实践的问题。我正在创建一个在线游戏,其中以 10,50,100 的增量为用户分配积分。
用途:将用户“游戏统计信息”存储在密钥中,并每 5 分钟左右运行一次 cron 作业,以永久更新数据存储中的统计信息。这样,“游戏”就可以运行,而无需去数据库获取值、点。
将使用预热脚本来提取和填充用户统计信息的键
问题:
1)在交通繁忙的道路上是否会出现问题并试图写信给该用户点关键?
2)在内存缓存中增加值的最佳实践?
这是我现在使用的粗略想法
3)在内存缓存中存储用户游戏统计数据的建议?任何投入将不胜感激。
谢谢你们!
java - 构建具有大量数据通信的系统的最佳方法是什么?
你好
我有一个缓存服务器(用 Java+Lucene 框架编写),它保存大量数据并根据请求查询提供它们。
它基本上是这样工作的:
- 在启动时,它连接数据库并将所有表存储到 RAM。
- 它监听请求并提供适当的数据作为数组列表(大约 1000 - 20000 行)
- 当用户访问网页时,它会连接到缓存服务器,请求并显示服务器响应。
由于内存问题,我计划在不同的实例中运行 Web 和缓存应用程序。缓存服务器作为服务,web 在 Tomcat 上。
您对如何在 Web 端和缓存服务器之间建立通信有什么建议?
我需要将带有数组列表的大量数据从一个实例传递到另一个实例。我应该考虑 Web 服务(xml 通信)、nio 套接字通信(可能是 Apache MINA)还是像 CORBA 这样的解决方案?
谢谢。
database - 对于可能非常繁忙的 Web 服务,我必须考虑哪些因素?
根据标题,假设我有一个 WCF Web 服务,在一天中的特定时间会遇到大量的流量/呼叫。对 Web 服务的每次调用都将调用对数据库的写入和从同一数据库的读取。
从技术上讲,我必须考虑什么(如果有的话)来保护数据库免受任何因频繁读写而产生的不良影响?
此外,考虑到这一点,WCF Web 服务的编码/结构是否必须有所不同?
tomcat - Apache Commons DBCP 奇怪的行为
我试图找出我们在一个高流量站点中使用 Tomcat 6.0.37 和 MySQL 5.5 的问题。测试负载是 200 个与 Tomcat 的并发连接——所有连接都指向同一个 URL,并且都访问数据库。
为了进行连接池,我们使用嵌入式 tomcat-dbcp 包。这是我们使用的资源配置:
当我在该站点上运行一些测试流量时,我发现连接池大量丢失了连接。大约一分钟后,我对 MySQL 进行了超过 10000 次连接尝试,并且池中的连接从未超过 20 个 - 所有连接几乎都立即关闭。
我尝试通过将其添加到 lib 文件夹并包含属性来切换到 Apache Commons
在我的配置中,但它给了我完全相同的结果。
我尝试切换到 C3P0 和 BoneCP,这实际上工作得很好,我看到最多 30 个连接被保持 - 在 MySQL 上没有新的或丢弃的连接
我也尝试过使用 Apache Tomcat 7 的连接池(只是为了它),它在以下配置中也能很好地工作:
我想知道 Apache Commons DBCP 是否真的有问题,即使在最简单的情况下也无法正常工作?这一切有解释吗?
linux - 创建 Linux 数据包拆分器
我正在寻找一些提示来构建网络数据包拆分器。我想要的是某种工具/代码,将逻辑链路的数据包(例如 tcp/ip 连接)拆分到多个网络接口上。
我成功地使用了 Linux 绑定驱动程序,但是只有在几个网络接口的带宽/延迟相似时才能获得最佳性能,因为绑定驱动程序使用循环数据包拆分。
任何人都知道任何可以使用加权方式而不是循环方式有效地在网络接口上拆分数据包(不是逻辑链路)的工具吗?
php - PHP MongoDB 驱动程序在慢查询时打开许多连接
在执行慢速查询时,我们在 MongoDB PHP 驱动程序 (v1.3) 中遇到了一些奇怪的行为。当请求很慢时,驱动程序似乎会继续打开连接,我不完全理解为什么。或许你们在这里有一些建议。
以下是一些事实:
- 网站和数据库在单个 Ubuntu 13.04 服务器上运行
- 服务器是高端8核16GB RAM服务器
- MongoDB v2.2.4
- 网站运行 PHP 5.4
- Apache 2 作为 Web 服务器
- PHP Mongo 驱动 1.3.x (应该是最新的 1.3)
- 网站使用 Doctrine ODM
- 网站随时有大约 50 到 100 个并发用户
- ulimit 打开文件 (ulimit nofile) = 64000
每天一次,Memcache 记录过期并完成慢速查询。这导致 PHP 最多打开 800 个与 MongoDB 的连接(根据日志,通常我们有 10 个打开的连接)。我们的网站几乎完全是 Memcached,因此我们的数据库没有任何其他重大负载。800 个打开的连接使网站一开始有 30 秒的加载时间,然后抛出几种类型的 MongoExceptions(连接/套接字异常太多)。
这是一个带有 group by 的丑陋查询。明确地说,我们知道这个查询很慢而且很愚蠢,我们今天要删除这个查询。只是不清楚为什么它搞砸了整个网站。我们使用 Doctrine 作为抽象层,但根据日志,这是对 200,000 个文档数据库(每个文档 3 个字段:id/product/date)的实际查询:
{"group":true,"keys":{"product":1},"initial":{"count":0},"reduce":"function (obj, prev) { prev.count++; }","options":[],"db":"Orders","collection":"History"}
查询完成后,其结果将写入 Memcache 24 小时。所以所有新请求都从 Memcache 获取,而不是从 MongoDB 获取。但是,它仍然保持大约 800 个连接,问题并没有自行解决,并且网站在一段时间后不再响应。打开这 800 个连接大约需要 10 分钟。
感觉就像一个典型的比赛条件。查询只是感觉不够重,无法在此负载下实际导致此服务器上的竞争条件。我的意思是,感觉不应该。
好的,所以问题是:
- 为什么 PHP 总是打开这么多连接?
- 为什么 MongoDB 不能处理这个问题(这应该不是什么大问题,对吧?)
- 关于我们应该做什么的任何其他建议?
- 我应该在连接和查询上设置超时来解决这个问题还是别的什么?
我问这个的原因是因为我们的网站增长非常快,我们预计未来会有更多的流量和 MongoDB 负载。
提前非常感谢!
asp.net - 处理巨大的流量 - 在线票务网站
背景:
基于 Asp.net 4.0 的电子商务网站。托管在具有专用 SQL Server 2008 标准(16 核)和 32GB RAM 的云设置上。
用户交互:
- 用户访问网站。
- 浏览不同的类别(还没有静态内容)
- 将产品放入购物车
- 计时器最多计时 15 分钟。
- 查看
- 登录/创建帐户
- 使用 Authorize.Net 网关处理付款(用户停留在我们的网站上)
- 使用第三方 SMTP 提供商在注册/忘记密码/订单完成时发送电子邮件。
注意:当产品页面加载和放入购物车时,会检查门票的可用性。一旦他们在购物车中有产品,肯定会有一个计时器计时 15 分钟。每 25 秒查询一次数据库以更新计时器。
事件:
好吧,伙计们,我们上周进行了一次大促销,可能为美国各地的粉丝出售了大约 10000 张门票。我们看到了无法控制的流量,在 2-4 小时内,我们看到我们的网站上有大约 1000 名并发用户。
问题:
问题是我们有大约 6 个 2GB 的云服务器,这些服务器很快就被填满,然后由于巨大的流量而崩溃。然后我们必须启动 4gb、8gb 和 16gb 服务器(各 2 个)来处理流量。在大约 15-20 分钟的崩溃期间,网站变得无响应,而且我们看到数据库(专用数据库)的 CPU 使用率达到 100%。
- gb 是服务器的 RAM 容量。
框架:
.net 代码编写得非常高效,它只执行两条 SQL 语句来获取和构建所有需要在浏览器上呈现的必要数据。处理数据库的所有业务逻辑都写在存储过程中。没有游标,存储过程中没有动态 sql。
必需的:
我无法理解网站崩溃的原因...我实施了很多代码分析工具,它们不断告诉我们哪个代码部分花费了太长时间或哪个查询花费了太多时间。当我们拥有更大的服务器(8gb 或更多)时,网站运行顺畅。
我应该消除每次页面加载都需要锤击数据库吗?比如拥有静态页面怎么样?(虽然它需要我们将产品信息导出到 html 中,这很好)。
如果我将页面存储在 Lucene.Net 索引中呢?然后从中渲染?在这种情况下,I/O 会花费很多吗?
我真的想要一些关于如何解决这个问题的专家意见?我们最初计划处理 25,000 个并发用户,但我们发现我们需要大量的大型云服务器来处理这个问题。
谢谢
php - 我的 mysql 数据库因高流量而崩溃
我有一个 Travian Private 服务器(它是一个基于浏览器的在线游戏),在我的网站上安装脚本后它运行良好,但是当在线用户通过一定数量(如 20 个在线用户)时,我开始收到 mysql 错误。这一个:警告:mysql_query():无法在第2750行的GameEngine/Database/db_MYSQL.php中保存结果集
在我收到此错误消息后,我开始收到更多以前运行良好的部分的错误(例如标题错误)
所以基本上当我从那个时候得到这个错误时,游戏慢慢地变得糟糕了。我什至尝试修复数据库,但这只会产生更多问题,因为它会影响游戏并破坏它。(我仍然尝试了几次,但没有解决问题)
谁能帮我这个?如何防止数据库因高流量而崩溃?
php - 我的一个 PHP 文件获得大量流量,我应该拆分成几个相同的文件吗?
好的,所以我从世界各地获得了大量流量到我的服务器上托管的 php 文件。该文件对访问者运行多次检查,运行多次 SQL 查询,并根据用户状态决定要做什么。
我每秒获得数百次点击。
所以,我的问题是:我是否应该创建许多相同的文件,并将流量随机驱动到我创建的每个文件?
我想避免流量丢失和过载,但我不知道这是否会通过拆分到不同的文件来实现。
感谢所有的帮助者。