有没有办法直接在erl中使用记录?无论我尝试什么,它总是说它无法找到记录.我正在尝试进行mnesia交易,没有我的记录,我不能走得太远.非常感谢任何帮助 - 谢谢!
我正在挖掘ejabberd,但我无法找到检查其Mnesia桌子的方法.
是否有类似MySQL shell来检查表?
我遇到了一个问题,我不能在我的程序中停止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应用程序中使用这些原型函数吗?
肯.
在这里测试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的摘要相匹配?
我现在已经使用了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"没有很好地扩展,这就是我的问题所在.
RAM (ram_copies)表,那么我不需要这个我的代码中的方法.现在,我认为如果我只有disc_only_copies,我也不需要这个功能.disc_copies为什么完全在Disc上运行或完全在RAM中运行的应用程序需要等待并加载表?
问题:
帮助和检查我的想法1,2和3.一般来说,只有在处理mnesia表类型时才需要此功能:disc_copies因为这种类型与光盘和RAM上的数据复制有关吗?
如果我的表都是碎片,(我总是为每个片段调用此方法以确保mnesia为我的应用程序做好准备),我是否必须调用每个片段的方法?是ATOMIC或Transactional的方法,如果我在mnesia事务中调用它(意味着如果我单独指定基表,mnesia将自动加载所有表片段)?我的碎片的表格类型对此功能也有影响吗?
我在我的机器上安装了二进制安装程序的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秒
这仍然不符合性能要求.谁能帮助我如何进一步推动这个限制??? 我错过了什么或设置了错误的值.对此的任何帮助都会非常棒.
谢谢
我有一个包含不同表的mnesia数据库.
我希望能够从不同的Linux终端访问表.
我有一个调用的函数add_record,这需要几个参数,说name和id.我想能够add_record打开node1和add record打开,node2但我想从不同的位置更新同一个表.
我读了几个来源,我发现的唯一一件事就是我应该使用net_adm:ping(node2).但不知何故,我无法从表中访问数据.
我一直在构建一个实时通知系统。它\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会增加延迟])。我知道需要进行一些特定于操作系统的调整,并且这些调整已经完成。
如果很容易将多个 Yaws 实例集群起来,这就不成问题了。在雅司病中,我使用了一些 appmod,并且我以 REST 方式做事。我在想 Cowboy Web 服务器可能会增强这里的功能。我以前没用过Cowboy,但我用过Misultin。看看 Cowboy,它是一个成熟的 OTP 应用程序,它似乎很容易集群,并且是轻量级的,可能会增加整个系统可以处理的客户端数量。存储位于 Mnesia 上,我可以轻松分配它以添加更多节点(可能通过复制),以便每个 Mnesia 实例前面都有一个 Cowboy 实例。
\n\n我的问题是:
\n\n我的猜测是否正确,如果我从 Yaws 切换到 Cowboy,我可能会显着提高性能?
雅司病有一个干净的 APIAppmods通过#arg{}记录。Cowboy 有相当于这两件事的东西吗(请举例说明)?
能Cowboy处理文件上传吗?如果是这样,您认为在频繁上传文件的情况下使用哪种服务器(Yaws 或 Cowboy)更好?说明如何使用 Cowboy 完成文件上传。
可以在同一台机器上运行多个 Yaws 实例。您认为为每个服务器(物理机)创建许多 Yaws 实例并将客户端负载分布在这些实例上会有帮助吗?这样做我需要知道什么?
当我设置 …
我想访问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 数据库执行读取、写入和更新操作。
我们将不胜感激您的帮助。
如果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".
mnesia ×10
erlang ×8
ejabberd ×3
yaws ×2
cowboy ×1
database ×1
distributed ×1
erl ×1
erlang-otp ×1
http ×1
javascript ×1
performance ×1
throughput ×1
xmpp ×1