问题标签 [high-load]

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.

0 投票
3 回答
279 浏览

java - Java-mysql 高负载应用程序崩溃

我的 html-scraper 有问题。Html-scraper 是使用 HtmlUnit 在 Java 上编写的多线程应用程序,默认情况下它运行 128 个线程。很快,它的工作原理如下:它从大文本文件中获取站点 url,ping url,如果可以访问 - 解析站点,查找特定的 html 块,将所有 url 和块信息(包括 html 代码)保存到数据库中的相应表中,然后转到下一个站点。数据库是mysql 5.1,有4个InnoDb表和4个视图。表具有用于表连接的字段的数字索引。我还有一个用于浏览和搜索已解析数据的 Web 界面(用于搜索,我使用带有增量索引的 Sphinx),编写在 CodeIgniter 上。

服务器配置:

一些mysql配置:

Java 机器使用默认参数运行,但下一个选项除外:

p>

当数据库为空时,scraper每秒处理 18 个 url,并且足够稳定。但是在 2 次弱点之后,当 urls 表包含 384929 条记录(约占所有已处理 url 的 25%)并占用 8.2Gb 时,java 应用程序开始工作非常缓慢并且每 1-2 分钟崩溃一次。我猜原因是 mysql,它无法处理不断增长的负载(解析器,它对2+4*BLOCK_NUMBER每个处理的 url 执行查询;sphinx,每 10 分钟更新一次增量索引;我不考虑 web 界面,因为它只有一个人使用) ,也许它重建索引很慢?但是 mysql 和 scraper 日志(也包含所有未捕获的异常)是空的。你怎么看待这件事?

0 投票
2 回答
105 浏览

asp.net - 如何使用 asp.net 有效地传递图像

我的 asp.net 应用程序创建、存储在内存中并向用户显示图像。标准 HttpHandler 从池中获取线程以传递每个图像。我认为这不是有效的。asp.net 能否比 HttpHandler 更有效地传递图像?

更新:图像是临时的。我们将其存储在 1 小时内。

0 投票
0 回答
2253 浏览

c# - 负载测试期间的 CommunicationException

我正在开发一个 wcf 应用程序,我开始看到一个奇怪的超时行为。我创建了一个与真实配置相同的 foo 应用程序,以确定问题是否与 wcf 相关。

客户端应用程序代码是这样的:

服务器应用程序代码只记录发送到控制台的数据:

这是 app.config 文件:

如果同时运行两个应用程序并且客户端应用程序的线程数为 100,则一切正常。但是,如果我将线程数更改为 300,则会出现以下异常:

我在四核机器上使用端口共享,服务是自托管的。

这与我在实际应用程序中遇到的问题相同,但超时时间更长(2 分半钟)。我不敢相信 300 是具有 InstanceContextMode.Single 的服务可以处理的最大连接数。我阅读了有关默认 ChannelInitializationTimeout 值(设置为 5)的问题,但我认为这不是问题(在另一个测试中,我开始为所有线程创建并打开一个客户端,并等待 6 秒以启动所有线程)线程,结果是 10 秒后的相同异常)。也许我正在以错误的方式配置某些东西。

如果有人有线索或想法,他们会有所帮助。提前致谢。

更新

我将绑定从 netTcp 更改为 basicHttpBinding,现在一切正常(没有引发 CommunicationExceptions)。此外,我开始比以前更快地在服务中获取消息,有谁知道为什么我会通过 basicHttpBinding 获得这种改进?

0 投票
1 回答
243 浏览

mysql - 大数据量能不能执行得更快【MySQL】

有什么办法可以优化下一个查询:

这里的主要任务是如果我有特定的keyword_id(CURRENT_KID),我需要找到曾经属于任何文章的所有关键字以及CURRENT_KID,并根据这些关键字的使用量对结果进行排序

表定义为:

“解释”的输出吓到我了

http://o7.no/J6ThIs

在大数据上,这个查询可以杀死一切:) 我能以某种方式让它更快吗?

谢谢。

0 投票
1 回答
737 浏览

redis - 从多个其他集合中删除一组成员的最佳方法

假设我有一个拥有 50 000 名成员的社区。因此,有一个 Redis 集合调用community_###_members了 50 000 个用户的 sha1 密钥,并且对于每个用户,他自己的集合user_###_communities存在于上面社区的 sha1 哈希

有一段时间我决定删除社区..杀死所有成员的最佳算法是什么?

谢谢。

0 投票
1 回答
338 浏览

http - 通过 HTTP 下载数据的最可靠方法

执行请求最可靠的编程语言/技术选择是什么,最重要的是,从负载非常重的 HTTP 服务器检索正确和完整的响应,通常会产生 HTTP 503 服务不可用或响应时间过长。从这样的服务器检索数据的方法是什么,这几乎可以保证所有数据都将在最快的时间内正确下载?

0 投票
1 回答
1295 浏览

optimization - LEMP Nginx + php-fpm 高负载超时然后很好

我对这一切都很陌生,但我对优化有强迫症。

我正在尝试优化为 wordpress 运行 LEMP 设置的 Web 服务器。

我使用的是 WP 超高速缓存而不是 w3 总缓存,因为与我的设置相比,它的性能似乎非常出色

我正在使用 blitz.io 测试并在域中抛出 450 个用户,持续 60 秒,从完整的 450 个开始。

这是我的结果:5 秒的峰值是错误和超时 http://i.imgur.com/CdpBz.png

峰值期间的 htop:http: //i.imgur.com/OhEyS.png

这是一个 2.5Ghz 和 2.5GB 内存的 vps w/ 2 cpu,你可以看到内存使用率很低。

nginx:worker_processes 1;worker_connections 1024;

php-fpm: 动态, pm.max_children = 10, pm.start_servers = 2, pm.max_spare_servers = 2, ;pm.max_requests = 500 默认值 = 0

我已经将 nginx worker_processes 增加到 2 没有任何变化,并且我已经弄乱了我的 php-fpm 设置而没有任何变化。有什么想法我应该看的吗?

0 投票
4 回答
621 浏览

mongodb - 如何选择 NoSQL 数据库引擎?

我们有一个包含以下参数的数据库:

  • 30k 条记录,7mb 大小
  • 20 次插入/秒
  • 1000 次更新/秒
  • 1000 范围选择/秒,按二级索引,每个大约 10 行
  • 至少需要一个二级索引
  • 如果密钥在 75 秒内未更新,则需要某种机制来使密钥过期(可以通过编程垃圾收集器完成,但需要额外的“last_update”索引并增加一些负载)
  • 不需要一致性
  • 不需要耐久性
  • db 应该存储在内存中

目前我们使用 Redis,但它没有二级索引,而且keys index:foo:*速度太慢。Membase 也没有二级索引(据我所知)。MongoDB 和 MySQL 内存引擎都有表级锁。什么引擎适合我们的用例?

0 投票
3 回答
5844 浏览

php - MySql 缓慢的数据获取

我有一个包含大量行的 MySql 表。我正在做一个简单的请求,它工作得非常快。当请求本身只需要 0.3 秒时,向客户端获取数据的唯一问题是大约 150 秒非常慢。

我在客户端和 Amazon EC2 MySql 实例上使用 php 5.3 + ZendFramework。PHP 代码和 MySql 位于不同的服务器上。

谁能告诉我如何提高数据获取速度?

0 投票
2 回答
81 浏览

php - 数组或非数组 [PHP]

我想为我的系统实施电子邮件黑名单。在该列表中,我想存储无法送达的电子邮件。

当我的系统无法发送电子邮件时,我想保存它,以后再也不会发送它们。

我可以看到两种可能最简单的解决方案:

当收件人不存在时,

  1. 我可以在用户表中设置标记
  2. 或在特定表中收集此类不良电子邮件

在我看来,第二个解决方案更简单(因为更容易被缓存),但是有一个关于选择方法的问题......

在 MyMail 功能中,我将首先调用在不良电子邮件列表(表)中搜索当前电子邮件,然后如果不存在则将其发送出去,否则取消发送。

所以主要问题是什么可以更快: 1. 每次向数据库查询以搜索特定的键,例如,SELECT 1 FROM table WHERE email='checking_email'。当然,该表将只有一个字段email,并且该字段将被索引(唯一)。我只会使用严格的比较。2.或将该表内容缓存在一个数组中并查询数组以检查特定元素|键是否存在?

如果错误的电子邮件列表可能很长,例如 1000 万条记录。

什么会更快?更适合高负载项目?

PS 我知道 PHP 数组会占用太多内存,但是在开始发送时事通讯时进行大量 DB 查询也不是很好。

PPS 我将把坏邮件缓存在一个变量中,这就是为什么在 PHP 中它会以数组的形式出现。

PPS 另一种方法是在每个缓存键中缓存每封坏电子邮件,并仅检查缓存中是否存在此类键,但在这种情况下,清除缓存会更加复杂。我认为这是最好的解决方案。缓存中的键可以是 bad_email_。该预发送调用的逻辑可能是:检查缓存中是否存在所需的电子邮件,如果不存在,则检查数据库,如果它不存在并且也存在,那么它就是好电子邮件。从另一个角度来看,如果系统检测到错误的电子邮件,那么它将同时保存在数据库和缓存中。