标签: distributed

远程 jmeter-server 将所有输出发送到控制 jmeter 实例

我的工作场所通过有线互联网连接,上行/下行有限,因此为了对 Web 应用程序进行负载测试,我使用分布式方法:

  • jmeter-server (v2.4) 的实例正在具有正确互联网连接的远程 Linux 机器上运行。
  • 控制 jmeter GUI(也是 2.4)正在我的桌面上运行。
  • 两者通过 VPN 连接。
  • SUT 是托管在另一个数据中心的 Web 应用程序。

这工作正常 - 我能够从 jmeter GUI 启动远程线程执行并在摘要报告中接收实时结果。

奇怪的是,我在 SUT 上施加实际负载的能力受到本地互联网连接(入站、下游)的限制。跟踪本地 jmeter GUI 和远程 jmeter-server 之间的链接,我可以看到从 SUT 到 jmeter-server 的所有 HTTP 流量都发送到本地 jmeter GUI。因此,如果 jmeter-server 从 SUT 检索 1MB 文件,则会将其发送到我的本地 jmeter GUI(通过我的慢速互联网链接)。

事情应该是这样吗?我预计只会传输关键的测量结果(成功、延迟等)。

[PS:我知道我可以将我的测试计划 scp 到远程盒子并在无头 jmeter 中运行它。但后来我没有看到实时结果......]

distributed jmeter load-testing

3
推荐指数
1
解决办法
5700
查看次数

Erlang:获取多主机群集上所有节点的列表

您可以使用net_adm:names()获取主机epmd上所有节点的名称.但是,如果您的群集由第二个主机(因此第二个epmd)组成,那该怎么办?你怎么能得到两台主机上所有节点的列表?

erlang distributed

3
推荐指数
1
解决办法
870
查看次数

在分布式消息队列中实现容错

假设在下图中中间消息队列失败.发件人仍然可以使用其他邮件队列发送邮件.

但是如果消息队列在收到消息后死亡会发生什么.发件人如何知道邮件是否已发送给接收者,以决定是否重新发送不同的邮件队列?

类似的情况如果接收器在消息队列向其发送消息后死亡会发生什么?发件人如何知道接收方是否已满足其预期请求?

在此输入图像描述

distributed fault-tolerance message-queue distributed-system

3
推荐指数
1
解决办法
2376
查看次数

如何分发socket.io

我使用nodejs和socket.io在我的业务应用程序上提供聊天,但我想分发部署,这样我就可以拥有尽可能多的聊天服务器来平衡流量负载。

我尝试了 nginx 的负载平衡方法,但这只是平衡流量,但 socket.io 服务之间的通信并不相同,因此从用户 A 发送到服务器 S1 的一条聊天消息不会传输到服务器 S2 上的用户 B。

有任何工具或方法可以做到这一点。

提前致谢。

=====编辑=====

这是应用程序的架构。

PHP CodeIgniter 上的主应用程序前端可以将其标记为 PHPCI NodeJs 和 SocketIO 上的聊天应用程序后端可以将其标记为 CHAT Redist 上的聊天模型数据可以将其标记为 REDIST

所以我现在拥有的是 PHPCI -> CHAT -> REDIST。那工作得很好。

我需要的是分发应用程序,这样我就可以拥有我想要的尽可能多的 PHPCI 或 CHAT 或 REDIST,例如

 PHPCI1    CHAT1
 PHPCI2 ->       -> REDIST1
 PHPCI3    CHAT2
Run Code Online (Sandbox Code Playgroud)

其中数字代表实例而不是不同的应用程序。

因此,连接到 PHPCI1 的用户 A 可以向连接到 PHPCI3 的用户 B 发送消息。

我认为 CHAT 中间的某个队列可以处理这个问题,比如rabbitmq,它只能使用 SocketIO 将消息传递给客户端。

distributed load-balancing node.js socket.io

3
推荐指数
1
解决办法
1784
查看次数

如何防止可能想要更改/删除DHT数据的恶意DHT客户端?

好吧,让我们说我有一个DHT运行10个客户端,其中包含大量数据.

恶意客户端运行我的程序的备用版本是否相对容易,这可能会对我的数据执行潜在的破坏性操作(例如替换密钥,删除密钥,更改数据,删除整个DHT等等). ..)

我该如何防止这种情况发生?

我只能想到:

  • 校验和验证程序,只允许那些连接.但这会被黑客攻击吗?

  • 使用某种密钥验证每个DHT客户端.

有谁知道如何防止这种情况?提前致谢.

distributed dht distributed-database

3
推荐指数
1
解决办法
153
查看次数

加速上限

我的MPI经验表明,加速不会随着我们使用的节点数量线性增加(因为通信成本).我的经历与此类似:一段时间后MPI加速下降.

今天一位发言者说:"神奇地(微笑),在某些情况下,我们可以获得比理想速度更快的速度!".

他的意思是理想情况下,当我们使用4个节点时,我们将获得4的加速.但在某些情况下,我们可以获得大于4的加速,有4个节点!该主题与MPI有关.

这是真的?如果是这样,有人可以提供一个简单的例子吗?或许他正在考虑在应用程序中添加多线程(他没时间,然后不得不离开,因此我们无法讨论)?

parallel-processing performance distributed distributed-computing mpi

3
推荐指数
1
解决办法
458
查看次数

iOS MultipeerConnectivity 是否提供路由层?

我正在编写一个应用程序,该应用程序无需连接移动运营商且无需本地 WiFi 即可运行。每个设备将充当发射器、接收器和路由器。到目前为止,我的主要挑战是我无法弄清楚MultipeerConnectivity到底是如何工作的,因为 MC 上的文档非常有限。Apple 否认透露 MC 的技术规范,声称它是专有的网络堆栈,因此我必须依靠网络嗅探器和逆向工程,这并不是弄清楚 MC 工作原理的最快方法。

假设我有 100 个设备形成一个网状网络,每个设备都在至少一个其他设备且最多三个其他设备的范围内

有没有什么办法可以将消息从节点A发送到不在节点A范围内的节点B,而不需要将消息广播到所有其他节点?我的意思是消息应该通过所有其他节点正确路由。MC 是否也包含路由层还是我必须自己编写?

据我所知,自组织延迟容忍无线网络仍然是研究的热点课题。与几年前一样,这些关于自组织延迟容忍无线网络的幻灯片对这个主题有了更多的了解。还有这篇论文。Apple 在 MC 方面取得了很大进展吗?我真的看不出有什么方法可以在不直接相互连接的节点之间发送消息而不发生洪水。正确的? 网状网络

networking distributed routes wifi ios

3
推荐指数
1
解决办法
283
查看次数

如何将 Pandas 数据帧传递给分布式工作者?

我试图将一个大熊猫数据帧作为函数参数传递给分布式 dask 的工作人员。我尝试过的(X 是我的数据框):

1 将数据直接传递给函数:

def test(X):
    return X
f=client.submit(test, X)
f.result()
Run Code Online (Sandbox Code Playgroud)

2 在初始化函数中保存数据帧。

def worker_init(r_X):
    global X
    X=r_X
client.run(worker_init,X,y)
Run Code Online (Sandbox Code Playgroud)

3 将数据帧分散到所有节点,然后通过期货使用它

def test(X):
    return X
f_X = client.scatter(X, broadcast=True)
f = client.submit(test,f_X)
f.result()
Run Code Online (Sandbox Code Playgroud)

没有一个变体适用于我的情况。变体 1 和 2 的工作方式几乎相同。dask-scheduler 为每个任务增加内存,并且永远不会释放它,直到它耗尽内存并且任务失败。

变体 3 不起作用,因为我没有传递 Pandas 数据帧,而是得到了一些垃圾。

如何将数据帧发送给工作人员并且在调度程序上没有 MemoryError?

变体 3 的完整代码应该是内存高效的,但甚至不传递数据帧:

import pandas as pd
import numpy as np
from distributed import Client
client = Client('localhost:8786')
X = np.random.rand(10000,100)
X=pd.DataFrame(X)
f_X = client.scatter(X, broadcast=True)
def test(X):
    return X
f = …
Run Code Online (Sandbox Code Playgroud)

python distributed pandas dask

3
推荐指数
1
解决办法
1589
查看次数

分布式TensorFlow [异步,图形间复制]:这是工作程序和服务器之间有关变量更新的确切交互

我已经阅读了分布式TensorFlow文档以及有关StackOverflow的问题,但我仍然对可以使用TensorFlow及其参数服务器体系结构进行分布式培训背后的动力有些怀疑。这是来自分布式TensorFlow文档的代码片段:

if FLAGS.job_name == "ps":
    server.join()
  elif FLAGS.job_name == "worker":

    # Assigns ops to the local worker by default.
    with tf.device(tf.train.replica_device_setter(
        worker_device="/job:worker/task:%d" % FLAGS.task_index,
        cluster=cluster)):

      # Build model...
      loss = ...
      global_step = tf.contrib.framework.get_or_create_global_step()

      train_op = tf.train.AdagradOptimizer(0.01).minimize(
          loss, global_step=global_step)
Run Code Online (Sandbox Code Playgroud)

这是我阅读的StackOverflow问题的部分答案:

工作程序从PS任务并行读取所有共享模型参数,并将它们复制到工作程序任务。这些读取与任何并发写入均不协调,并且不会获取任何锁:尤其是该工作程序可能会看到一个或多个其他工作程序的部分更新(例如,可能已应用了来自另一工作程序的更新的子集,或元素的一个子集)中的变量可能已更新)。

工作者根据一批输入数据和在步骤1中读取的参数值在本地计算梯度。

工作人员使用由优化算法(例如SGD,带有动量的SGD,Adagrad,Adam等)确定的更新规则,将每个变量的梯度发送到适当的PS任务,并将梯度应用于它们各自的变量。更新规则通常使用(大约)交换操作,因此它们可以独立地应用于来自每个工作程序的更新,并且每个变量的状态将是接收到的更新序列的运行汇总。

我必须在另一个环境中重现这种参数服务器架构,并且我需要深入了解TensorFlow框架内worker和PS任务之间如何交互。我的问题是,PS任务在从工作人员那里收到值后会执行某种合并或更新操作,还是只存储最新的值?仅仅存储最新的值可以合理吗?查看TensorFlow文档中的代码,我发现PS任务只是执行一个join(),我想知道此方法调用的背后是PS任务的完整行为。

还有一个问题,计算梯度和应用梯度之间有什么区别?

python distributed asynchronous tensorflow

3
推荐指数
1
解决办法
228
查看次数

数据库联接如何在分布式关系数据库中工作?

根据我自己的研究,我了解单个数据库(非分布式)上的 SQL 连接算法背后的基本思想 - 例如。散列连接、合并连接、循环连接。分布式连接算法是否类似于非分布式数据库上的连接算法?

例如,如果我有一个具有以下属性的用户表: - User_id - Age

我有一个带有属性的 Comments 表: - User_id - Comment_id - Comment

假设分布式数据库使用User_id对Users表进行分片,使用Comment_id对Comments表进行分片。

那么当您调用 SQL 查询时实际发生了什么:

SELECT * FROM Users INNER JOIN Comments ON Users.User_id = Comments.User_id
Run Code Online (Sandbox Code Playgroud)

? 是否将 User 表和 Comment 表整理到一台机器上,然后执行 JOIN?或者,即使它是分布式的,您是否也可以通过某种方式进行 JOIN?

sql database distributed

3
推荐指数
1
解决办法
894
查看次数