标签: mnesia

Erl中的记录(Erlang问题)

有没有办法直接在erl中使用记录?无论我尝试什么,它总是说它无法找到记录.我正在尝试进行mnesia交易,没有我的记录,我不能走得太远.非常感谢任何帮助 - 谢谢!

erlang mnesia erl

5
推荐指数
1
解决办法
1656
查看次数

ejabberd:检查Mnesia桌子?

我正在挖掘ejabberd,但我无法找到检查其Mnesia桌子的方法.

是否有类似MySQL shell来检查表?

erlang mnesia ejabberd

5
推荐指数
1
解决办法
3246
查看次数

当mnesia从程序中停止时,停止Erlang app会挂起

我遇到了一个问题,我不能在我的程序中停止mnesia而不会导致应用程序挂起.

我现在正在我的erlang应用程序中进行mnesia原型设计.

在我的jaus_app.erl文件中,start()调用:

{atomic, ok} = mnesia:load_textfile("priv/mnesia_prototype.txt")
Run Code Online (Sandbox Code Playgroud)

我的stop()函数调用:

mnesia:dump_to_textfile("priv/mnesia_prototype_res.txt"),
mnesia:stop(),
Run Code Online (Sandbox Code Playgroud)

当我注释掉这些行并从erlang提示符启动和停止mnesia时,我能够干净地停止我的应用程序.

我不应该在完全成熟的erlang应用程序中使用这些原型函数吗?

肯.

erlang mnesia

5
推荐指数
1
解决办法
491
查看次数

Erlang和JavaScript MD5摘要匹配

在这里测试MD5的Javascript实现: http://www.webtoolkit.info/javascript-md5.html给出以下输出:

MD5("muzaaya") = "00e081abefbbbf72b2d5258196a9b6d0"

转到我的erlang shell,并计算相同值的MD5我得到这个:

Eshell V5.8.4  (abort with ^G)
1> erlang:md5("muzaaya").
<<0,224,129,171,239,187,191,114,178,213,37,129,150,169,
  182,208>>
2>

我怎么能比较这两个?如果来自JavaScript前端应用程序的MD5结果来到我的Erlang后端,我希望能够比较两个摘要.如何将Javascript MD5摘要与Erlang的摘要相匹配?

javascript erlang yaws mnesia

5
推荐指数
1
解决办法
2120
查看次数

mnesia:wait_for_tables/2,我真的明白了吗?

我现在已经使用了mnesia一段时间了.我必须承认,我觉得我并不完全理解mnesia的概念:wait_for_tables/2.引用下面的文档说:

Some applications need to wait for certain tables to be accessible in order to do
useful work. mnesia:wait_for_tables/2 hangs until all tables in the Tab List are
accessible, or until timeout is reached.
现在,对于我开发的所有应用程序,我必须在启动后端时调用它.在上面的文档中,上下文"Some applications"没有很好地扩展,这就是我的问题所在.

这些是我的想法:
1.等待这种方法意味着我们正在加载mnesia表,从Disc到RAM(Disc_copies的情况)
2.我个人认为,如果我的应用程序只包含RAM (ram_copies)表,那么我不需要这个我的代码中的方法.现在,我认为如果我只有disc_only_copies,我也不需要这个功能.
3.此外,我在从网络加载mnesia表时需要此功能,尤其是当我的表被复制时,所以我的应用程序需要等待启动时​​的mnesia才能使这些表准备好.但这仍然只适用于类型表,disc_copies为什么完全在Disc上运行或完全在RAM中运行的应用程序需要等待并加载表?

问题:
帮助和检查我的想法1,2和3.一般来说,只有在处理mnesia表类型时才需要此功能:disc_copies因为这种类型与光盘和RAM上的数据复制有关吗?

如果我的表都是碎片,(我总是为每个片段调用此方法以确保mnesia为我的应用程序做好准备),我是否必须调用每个片段的方法?是ATOMIC或Transactional的方法,如果我在mnesia事务中调用它(意味着如果我单独指定基表,mnesia将自动加载所有表片段)?我的碎片的表格类型对此功能也有影响吗?

erlang mnesia

5
推荐指数
1
解决办法
1440
查看次数

提高ejabberd-2.1.10的消息吞吐量

我在我的机器上安装了二进制安装程序的ejbberd-2.1.10(Win7 32bit 2.93GHz Core2Duo 3GB RAM).由于我们的设置需要非常高的消息吞吐量,因此我查看了 性能调优参考,并在我的ejabberd.cfg和ejabberdctl.cfg文件中进行了更改.

{整形器,正常,{MAXRATE,千万}}
ERL_MAX_PORTS = 65536
ERL_PROCESSES = 250000
ERL_MAX_ETS_TABLES = 20000

现在,当clientA向clientB发送消息时,每条消息包含10条消息,每条消息为1500字节

所用时间如下
1)使用默认值-14.3秒
2)使用上面给出的覆盖值 - 1.70283秒

这仍然不符合性能要求.谁能帮助我如何进一步推动这个限制??? 我错过了什么或设置了错误的值.对此的任何帮助都会非常棒.

谢谢

performance xmpp mnesia ejabberd throughput

5
推荐指数
1
解决办法
2290
查看次数

从不同节点访问分布式mnesia数据库

我有一个包含不同表的mnesia数据库.

我希望能够从不同的Linux终端访问表.

我有一个调用的函数add_record,这需要几个参数,说nameid.我想能够add_record打开node1add record打开,node2但我想从不同的位置更新同一个表.

我读了几个来源,我发现的唯一一件事就是我应该使用net_adm:ping(node2).但不知何故,我无法从表中访问数据.

database erlang distributed mnesia

5
推荐指数
1
解决办法
1563
查看次数

Web 服务器对高客户端轮询率的容忍度:Cowboy 与 Yaws Web 服务器

我一直在构建一个实时通知系统。它\xe2\x80\x99是Web应用程序的一部分,但事件一发生就必须被看到。长轮询不是一个选择,因为当没有可用事件时,Web 服务器保持连接的成本很高,因此我不得不进行短暂的轮询。

\n\n

每个客户端每隔 2 秒访问一次 Web 服务器(这是一个相当高的速率)。当事件可用时,它们会以 JSON 形式发送到 JavaScript 客户端。现在,这需要服务器设置来处理大量的短期连接。我已经使用 Yaws Web 服务器实现了一个这样的系统。然而,因为 Yaws 启动了相当多的其他服务,所以感觉很重,当连接超过 30,000 时,连接开始被拒绝或中止(可能是因为我在与 Yaws 运行相同的 Erlang VM 中运行一些 ETS 表 [分离这些可能需要rpc:call/4,这\xe2\x80\x94我担心\xe2\x80\x94会增加延迟])。我知道需要进行一些特定于操作系统的调整,并且这些调整已经完成。

\n\n

如果很容易将多个 Yaws 实例集群起来,这就不成问题了。在雅司病中,我使用了一些 appmod,并且我以 REST 方式做事。我在想 Cowboy Web 服务器可能会增强这里的功能。我以前没用过Cowboy,但我用过Misultin。看看 Cowboy,它是一个成熟的 OTP 应用程序,它似乎很容易集群,并且是轻量级的,可能会增加整个系统可以处理的客户端数量。存储位于 Mnesia 上,我可以轻松分配它以添加更多节点(可能通过复制),以便每个 Mnesia 实例前面都有一个 Cowboy 实例。

\n\n

我的问题是:

\n\n
    \n
  1. 我的猜测是否正确,如果我从 Yaws 切换到 Cowboy,我可能会显着提高性能?

  2. \n
  3. 雅司病有一个干净的 APIAppmods通过#arg{}记录。Cowboy 有相当于这两件事的东西吗(请举例说明)?

  4. \n
  5. Cowboy处理文件上传吗?如果是这样,您认为在频繁上传文件的情况下使用哪种服务器(Yaws 或 Cowboy)更好?说明如何使用 Cowboy 完成文件上传。

  6. \n
  7. 可以在同一台机器上运行多个 Yaws 实例。您认为为每个服务器(物理机)创建许多 Yaws 实例并将客户端负载分布在这些实例上会有帮助吗?这样做我需要知道什么?

  8. \n
  9. 当我设置 …

erlang yaws mnesia http cowboy

5
推荐指数
1
解决办法
4055
查看次数

如何查看ejabberd的Mnesia数据库

我想访问ejabberd服务器的Mnesia数据库,但我不知道如何读取、写入和更新数据,有没有办法可以做到这一点。我可以将数据库更改为 MySQL 而不是 Mnesia。我试过这个

{odbc_server, {mysql, "localhost", "xmpp_db", "root", "**********"}}. 
Run Code Online (Sandbox Code Playgroud)

这里的“xmpp_db”是我为ejabberd创建的数据库的名称,但我没有看到xmpp_db有任何变化。我应该在“xmpp_db”中创建任何表吗?但问题是我的表和字段的名称是什么。我也用过

ejabberdctl dump /tmp/ejabberd.db.txt 
Run Code Online (Sandbox Code Playgroud)

命令,但这只是为了读取数据(数据格式非常粗略,很难理解)。有什么方法可以对 Mnesia 数据库执行读取、写入和更新操作。

我们将不胜感激您的帮助。

mnesia ejabberd

5
推荐指数
1
解决办法
6516
查看次数

Erlang:创建一个光盘架构

如果Erlang应用程序myapp需要运行mnesia,那么mnesia应该将其包含在其应用程序资源文件中的key下applications,这样如果myapp启动,mnesia将自动启动 - 默认情况下它的节点类型是opt_disc(OTP 18).

如果我想要一个disc节点怎么办?我知道我可以-mnesia schema_location disc在命令行设置,但这只有在架构已经存在时才有效,这意味着我应该在启动myapp之前执行一些初始化,是否有"OTP-ful"方式,而不是mnesia从中移除applications,以避免这种初始化?主要目标是将"init-then-start"变为"start".

erlang mnesia erlang-otp

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