问题标签 [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.
caching - NoSQL + 分布式缓存在非常并发环境中的数据一致性
在幻灯片上,您可以看到非常粗略的预订系统架构。这是一个非常并发的环境,许多用户可能会同时尝试预订同一个酒店/房间。
在底部我们有 NoSQL 数据库,为了快速响应/请求,有分布式缓存和请求数据的应用程序。
这张幻灯片的想法是,当您使用 NoSQL + 分布式缓存时,您会遇到同步问题,这意味着数据一致性问题。您需要将分布式缓存与 NoSQL 数据库同步。
问题:除了 IMDG 之外,这种情况下已经存在哪些解决方案/技术?这可能是框架或/和最佳实践。是否有任何特定的分布式缓存可以解决这个问题?
问题 2[更新]:我们写入 NoSQL 数据库而不是缓存的原因是什么?那是交易,节点失败的可能性还是其他什么?
PS这不是我的幻灯片,作者声称这是 IMDG 的一个很好的用例。
php - 将 PHP 与全栈框架一起用于高负载项目是一个坏主意吗?
我知道 PHP 代码被编译为字节码并在每次运行时重新执行(即在每个页面请求上)。所以引擎应该在每个请求上重新定义所有使用的类、函数、变量等。
当使用像 Laravel 或 CakePHP 这样的全栈框架时,这也意味着在每个请求上都会一次又一次地完成相同的引导工作,比如解析配置文件、注册路由、自动加载类等。
这似乎是处理此类事情的非常不理想的方式。甚至缓存,无论是 OPcache 还是框架缓存系统,都没有足够的帮助,因为仍然需要执行脚本。
另一方面,基于 NodeJS 或 Ruby 等引擎的应用程序在启动期间只编译和引导一次。所以我想他们应该比 PHP 有更好的可扩展性。
但是 PHP 如此流行,甚至 Facebook 也使用它。所以我想知道,对于一个可能会承受重负载的网站来说,什么是正确的选择?出于这种目的使用带有全栈框架的 PHP 是一个坏主意吗?
php - 如何使用 PHP 在 Highload 上增加 Mysql 整数字段
我遇到了以下问题:当我尝试增加 mysql 表的一列时,值在高流量负载时不同步。
该任务分为两件事,增加列并将新行添加到另一个表。所以如果我添加 100 行,计数器应该保持在 100。
在高负载(例如 100 请求/秒)时,计数器出现问题,我在计数器值上得到 80,但添加了 120 行。
我认为问题在于某些请求的处理速度比其他请求更快,并且可能会覆盖这些值。希望有人可以帮助我指出正确的方向,或者对如何解决这个问题提出建议。
最好的,尼尔斯
python - uWSGI python高负载配置
我们有一个 32 核的大型 EC2 实例,目前运行 Nginx、Tornado 和 Redis,平均每秒处理 5K 请求。一切似乎都运行良好,但 CPU 负载已经达到 70%,我们必须支持更多请求。其中一个想法是用 uWSGI 替换 Tornado,因为我们并没有真正使用 Tornado 的异步特性。
我们的应用程序由一个函数组成,它接收一个 JSON(~=4KB),做一些阻塞但非常快的东西(Redis)并返回 JSON。
- 将 HTTP 请求代理到 Tornado 实例之一 (Nginx)
- 解析 HTTP 请求 (Tornado)
- 读取 POST 正文字符串(字符串化 JSON)并将其转换为 python 字典(Tornado)
- 从位于同一台机器上的 Redis(阻塞)中取出数据(py-redis 和hiredis)
- 处理数据(python3.4)
- 在同一台机器上更新 Redis (py-redis 和hiredis)
- 为响应准备字符串化 JSON (python3.4)
- 向代理发送响应 (Tornado)
- 向客户端发送响应(Nginx)
我们认为速度的提高将来自 uwsgi 协议,我们可以将 Nginx 安装在单独的服务器上,并使用 uwsgi 协议将所有请求代理到 uWSGI。但是在尝试了所有可能的配置并更改了操作系统参数之后,即使在当前负载下,我们仍然无法让它工作。大多数时候 nginx 日志包含 499 和 502 错误。在某些配置中,它只是停止接收新请求,就像它达到了某些操作系统限制一样。
正如我所说,我们有 32 个内核、60GB 可用内存和非常快的网络。我们不做繁重的事情,只做非常快速的阻塞操作。在这种情况下,最好的策略是什么?进程、线程、异步?应该设置哪些操作系统参数?
目前的配置是:
Nginx 配置:
操作系统配置:
我知道限制太高了,开始尝试每一个可能的值。
更新:
我最终得到以下配置:
java - Fast tree evaluating
I have an evaluating tree class. Each node has children in a strict order. A server has a list of such trees.
When a client successfully connects to the server, it sends a lot of different HashMaps
to a selected tree for computation. Typical HashMap
s have pairs: [Variable string name, Variable int value].
Each TreeNode
has a complex condition, which can read variables and has operations such as AND, OR, XOR, comparing with other variables or numbers. Each TreeNode
also has statements, which can read/write variables and put new variables to HashMap
s, which can subsequently be read/written in another TreeNode
.
Here is a simplified structure of the trees:
My code currently performs about 200000 iterations/sec on an Intel i7 u3517 for a tree with 100 nodes and an input HashMap
with 10 variables. How can I speed it up?
java - 偶尔的异常 org.hibernate.QueryException:无法解析属性
问题: 有时在我们的高负载下的 Web 应用程序中,当不同线程(在同一毫秒内)同时有两个 Hibernate 查询时,我们有两个异常(在两个线程中):“ org.hibernate.QueryException: could not resolve property ” on不同的实体和不同的属性。看起来两个查询出于某种原因交换了它们的属性映射,因此AbstractPropertyMapping类在其他查询实体的映射中找不到所需的属性并引发QueryException。每个实体仅在一个线程中使用。
环境:
- 阿帕奇雄猫 7
- 春天 4.0.6
- 休眠 4.3.6.Final
配置:
第一个线程中的异常:
第二个线程中的异常:
源代码:
如何防止此异常?先感谢您。
javascript - 如何使用一种 get 方法克隆标记对象?
如何在一页中使用 svg 图像数据制作克隆标签对象。没有很多获取服务器的方法。目标页面示例
此示例获取 graph.svg,其中包含对 graph.svg 的许多获取请求。第一个请求显示结果 200,所有以下显示结果 304,但我需要没有以下一次。
我找到了 attr 声明,但是下一个代码在 #tg1 中的 attr 数据中不起作用。
使用数据 attr,tg1 发送以下获取请求。
我怎么能在 html 中做到这一点,wo js。是否可以通过相对 uri ~like xpath 从当前页面接收数据。
graph.svg 是自渲染图像。它可以在 div 中的影子根(现在不是变体)中工作。如果可以是一种方法 - 使用 JS,我如何将 XMLHttpRequest 结果放入标记对象中的文档中?
使用 document.querySelector("...") 等元素进行构造。contentWindow/contentDocument/document/window/innerHTML = ... 没有用。
如果 js - 需要纯 js wo jquery 和其他框架中的解决方案。火狐/铬。
ruby-on-rails - 具有后台架构的高负载 Rails 服务器
这是我的任务。每隔一个后台任务应该根据一些数据生成 json。此操作不是 CPU 密集型(主要是网络),它会生成 JSON 内容(5-10KB)。操作大约需要 200 毫秒。
此外,我有大约 1000 个客户每隔几秒钟就要求此内容一次。假设它大约是 200 个请求/秒。
服务器应该只输出当前的实际 json。
目前,我已经让 rails 4+nginx+passenger+debian 服务器在做与这项工作相关的其他工作。
作为一名学生,我希望以最具成本效益的方式制作我的服务器,并能够通过以下方式轻松扩展:
- 添加更多后台程序作业,生成更多 json
- 将请求数量增加到每秒 10 000 个
目前我有带有 2 个 CPU 核心的 linode 2048 ssd。我的问题是:
- 我应该为我的后台任务使用什么 gem/解决方案(目前是用 ruby 编写的)
- 如何有效地存储实际的 json 并将其从后台程序传递到 rails/nginx。
- 如何使服务 json 尽可能快。
activemq - 我可以在没有妖魔化的情况下管理 ActiveMQ 工作人员吗?
我在 Gearman、ZeroMQ 和 RabbitMQ 中查找有关工作人员的信息,我发现最佳实践是使用像 Supervisor 之类的东西。我用谷歌搜索 ActiveMQ,但找不到有关工作人员管理的信息。是一样的,还是ActiveMQ可以自己启动、杀死、重启和增加worker?
elasticsearch - Logstash/Elasticsearch/Kibana 资源规划
如何根据负载计划资源(我怀疑是 elasticsearch 实例):
对于负载,我的意思是 ≈500K 事件/分钟,每个包含 8-10 个字段。
我应该转动哪些配置旋钮?我是这个堆栈的新手。