问题标签 [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 投票
2 回答
2988 浏览

postgresql - Postgres 调整和缩放

我们目前有一个 Postgres 数据库,其中包含 100 个表,其中 20 个具有超过 5 000 000 行,主数据库服务器在 Debian 32MB RAM 8 处理器上运行。

除了主数据库,我们还有一个使用 Slony 复制的从数据库。

我们的应用程序使用 Java 和 Hibernate 框架进行 SQL 查询,c3p0 作为连接池。

我们的问题是,我们预计当前高峰时段的高负载大约是 30 点,而低流量时段大约是 4 点。目前我们没有在选择语句中使用主从之间的负载平衡。

Postgres master DB的配置如下:

自动真空已开启。

c3p0 Hibernate连接池配置为:

我们面临的一个主要问题是选择查询非常复杂,有很多连接甚至联合。

调整、扩展我们的实际系统并避免高负载的解决方案是什么?

升级硬件?主从之间的负载平衡?配置错误?

有什么比 slony 更好的负载平衡复制系统的建议吗?

优化 SQL 语句是不可能的,因为我们不是在开发软件。

0 投票
1 回答
2083 浏览

c - 检查mmap的地址是否正确

我正在编写一个应该在 FreeBSD 8.0 和 Linux 上运行的高负载守护程序。守护进程的主要目的是传递由其标识符请求的文件。标识符通过对 db 的请求转换为本地文件名/文件大小。然后我使用顺序mmap()调用来传递带有send().

但是,有时 db 中的文件大小和文件系统上的文件大小不匹配(realsize < db 中的大小)。在这种情况下,我已经发送了所有真实的数据块,并且当映射下一个数据块时——mmap 没有返回错误,只是通常的地址(我也检查了 errno 变量,它在 mmap 之后等于零)。当守护进程试图发送这个块时,它会得到分段错误。(此行为保证在 FreeBSD 8.0 amd64 上发布)

我在打开前使用安全检查以确保尺寸与stat()通话。然而,现实生活向我表明,在极少数情况下仍然可以引发段错误。

所以,我的问题是有没有办法在取消引用之前检查指针是否可以访问?当我在 gdb 中打开核心时,gdb 说给定地址超出范围。可能有人可以提出另一种解决方案。

0 投票
1 回答
192 浏览

java - 创建异常的成本与记录它的成本相比

只是想知道引发java异常(或调用Throwable的本机fillInStackTrace())的成本与使用log4j(在文件中,使用生产硬盘驱动器)记录它的成本相比......

问自己,当出现异常时,是否值得经常记录它们,即使它们并不重要......(我在高负载环境中工作)

谢谢

0 投票
4 回答
1399 浏览

web-applications - 最低延迟,最低开销的应用服务器?

我正在设计一个应用程序,它有一个网络接口,用于提供大量非常小的元数据请求。应用程序代码本身非常快,基本上是查找缓存在内存中的数据并将其发送给客户端。

对于在 linux 机器上运行的网络应用程序服务器,我可以获得的绝对最低延迟是多少?这将是一个在 gigE 上运行的内部应用程序,无需身份验证。考虑的任何语言/框架,优先考虑 C、C++ 或 Python。协议也是如此,尽管 HTTP 会很好。

0 投票
2 回答
1412 浏览

ruby-on-rails - 托管高流量 Facebook 应用程序(游戏)

我们目前正在开发一个高流量的 facebook 应用程序。所有流量都将在一个月内,其中有 500.000 到 1.000.000 的预期用户。在那个月之后,游戏结束了,我们有一个赢家 - 所以应用程序将被存档。

我们目前正计划使用 ruby​​ on rails 开发应用程序,并寻找可以处理流量的托管选项。问题不在于用户,而在于峰值:我们将在短时间内每天收到大约 500.000 个请求(假设在最坏的情况下在 3 分钟内)

我们预计该应用程序有 500.000 到 1.000.000 个用户,峰值出现在下午 1:00(时区 GMT+1),其中大多数(高达 80% 的用户)将发送大部分请求。请求是从 6 月 11 日到 11 月 7 日 - 之后,应用程序/游戏关闭/结束。

我们目前正在开发一种积极的缓存机制——目前我们正在考虑 2 或 3 个小型应用程序/网络服务,它们将处理负载。

负载分布如下:a) 主应用程序,缓存数据(11 个屏幕,每个 200k) b) 投票:每天直到下午 1:00(时区 GMT+1) - 每个用户投票发送约 10k 数据,高并发峰值价值观!

问题:

  • 是否有任何可推荐的特定应用程序设置?
  • 有没有可以推荐的托管合作伙伴?

谢谢!

0 投票
1 回答
194 浏览

algorithm - 如何存储和收集数据以挖掘最近 24 小时、最近 7 天、最近 30 天、最近 365 天查看次数最多的信息?

假设我们有一个高流量项目(一个地铁站点),它应该使用这个选项(不是实时)提供排序。视频数量约为 200K,有关视频的所有信息都存储在 MySQL 中。每日视频观看次数约为 1.5KK。作为工具,我们有硬盘驱动器(文本文件)MySQLRedis

我应该如何存储这些信息?

第一个想法是记录对文本文件的所有访问(每小时单个文件,例如visit_20080101_00.log)。在每小时开始计算前一小时每个视频的观看次数,并将此信息插入 MySQL。然后重新计算总计(过去 24 小时)并更新表中的统计信息。在每一天的开始,我们必须做同样的事情,但要重新计算过去 7 天、过去 30 天、过去 365 天。这种方法对我来说似乎很糟糕,因为我们必须为每个视频存储过去 365 天的信息才能进行正确的计算。

有没有其他好的方法?也许,我们必须为此选择另一种乐器?

谢谢你。

0 投票
2 回答
231 浏览

mysql - MySQL:如何在多个只读架构中确保完整性

场景很容易描述,但可能有一个复杂的答案:

想象一下你有一个只写mysql数据库的情况。然后你有大约 5 或 6 个只读数据库。写入数据库具有特定库存的计数。您有成千上万的用户在使用这个特定的库存项目,但数量有限。为了论证的缘故,说 10 个项目。

确保只售出 10 件商品的最佳方法是什么?如果只读从站更新的时间之间甚至有 200 毫秒的增量,计数的完整性是否会过时,从而销售您没有的库存?

你将如何解决/扩展这个问题?

0 投票
2 回答
3118 浏览

caching - 如何在高负载网站上处理 memcached 中的过期项目(由于 TTL)?

当您有 600 个请求/秒的峰值时,由于 TTL 到期而刷新项目的内存缓存会产生一些非常负面的影响。几乎同时,200 个线程/进程发现缓存为空并触发数据库请求以再次填满它

处理这些情况的最佳做法是什么?

ps 这种情况的术语是什么?(让我有机会在该主题上获得更好的谷歌搜索结果)

0 投票
1 回答
96 浏览

php - 在等待远程门时释放资源(PHP、Apache、Nginx)

我的 php 脚本等待远程门响应,通常为约 20 秒。它会导致 apache httpd 线程在打开 MySQL 连接的情况下驻留在内存中,并最终超过 MaxClients 值。如何管理以释放空闲资源,直到远程门响应。

一种解决方案是:1)运行远程门请求,然后将用户重定向到刷新到某些 url 测试数据的页面,2)在 nginx 配置文件中写入该 url 的规则:如果存在特定文件,则运行 apache 以提供数据 else show刷新页面。3) 远程门请求将数据保存在文件中

因此,我们从向远程门发出请求的脚本中取消了 apache 的链接,我们可以使其尽可能小。远程请求时,服务器仅由该脚本和来自 nginx 的轻请求使用。

所以这可能是一个很好的解决方案,但我想知道这种方法的缺点。并且可能有更好的方法。

0 投票
4 回答
376 浏览

java - WorkManager 和高工作量

我正在开发一个与网络上数百个设备交互的应用程序。提交的工作类型需要大量并发线程(主要是因为它们中的每一个都需要网络交互并且单独进行,但也有其他原因)。目前,我们处于每个交互设备需要大约 20-30 个线程的领域。

一个简单的计算将它放在数千个线程上,甚至多达 10,000 个线程。如果我们抛开线程切换等 CPU 代价,在 CentOS 64 位上运行的 Java 5 可以处理多少个线程?这只是 RAM 的问题还是我们应该考虑其他什么?

谢谢!