Articles of erlang

Nginx反向代理自定义Mochiweb应用程序

我有Nginx作为我的前端Web服务器在端口80上侦听。而某些请求,我已经设置了Nginx来将它代理到一个基于mochiweb的web服务器上,我在端口8000上监听。我的nginxconfiguration这看起来像这样: location /mymochiserver { proxy_pass http://127.0.0.1:8000; proxy_redirect off; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; client_max_body_size 10m; client_body_buffer_size 128k; proxy_connect_timeout 90; proxy_send_timeout 90; proxy_read_timeout 90; proxy_buffer_size 4k; proxy_buffers 4 32k; proxy_busy_buffers_size 64k; proxy_temp_file_write_size 64k; } 现在,当我访问URL http:// localhost / mymochiserver时,我在浏览器中看不到响应。 浏览器只是说“等待本地主机”。 每当用户连接到mymochiserver时,mymochiserver就会在terminal窗口上打印一些跟踪信息,现在我可以看到每个我打开的浏览器窗口跟踪这个URL的跟踪信息。 但是我没有看到我期望看到的任何输出被写入浏览器。 但是,当我直接访问URL http://127.0.0.1:8000/一切工作正常,我看到mymochiserver在浏览器上的输出。 所以它直接调用时有效。 但是当通过nginx进行反向代理时,它似乎没有工作。 任何想法可能是错的? 更新:在我的Mochiweb应用程序中,我有这些代码行: Socket = Req:get(socket), inet:setopts(Socket, […]

Nginx的速度,以及如何复制它

我从学术的angular度而不是从实践的angular度对此感兴趣, 我不打算创build一个生产networking服务器来与nginx竞争。 我想知道的是nginx究竟是如此之快。 谷歌对此的回应是这个主题,但它只是链接到一个神秘的幻灯片和不同的IO策略的一般覆盖。 所有其他的结果似乎只是描述了nginx的速度,而不是原因。 我试图build立一个简单的erlang服务器来尝试与nginx竞争,但无济于事; nginx胜出。 我所有的服务器都会为每个请求产生一个新的进程,使用该进程将文件读入套接字,然后closures文件并杀死线程。 这并不复杂,但是考虑到erlang的轻量级进程和底层的aio结构,我认为它会竞争,但是nginx仍然在一个大的压力testing下以300毫秒的平均值胜出。 什么是nginx做我的简单的服务器不是? 我的第一个想法是将文件保存在主内存中,而不是在请求之间折腾它们,但是文件系统caching已经这样做了,所以我不认为这会造成很大的差别。 我错了吗? 还是有什么我失踪?

运行testing套件时,CouchDB会在Linux上崩溃

我一直在试图在我的webfusion虚拟服务器上安装CouchDB。 我遵循webfusion论坛的最新指示(见: http : //forum.webfaction.com/viewtopic.php? id=2355),它运行(只)蒲团是非常缓慢,我得到502错误。 无论如何,当我运行testing套件时,它会崩溃,浏览器在前两个基本testing中挂起。 Webfaction支持非常好,但没有erlang的经验来解释错误日志。 任何人都可以帮助我知道什么可能是错的?

连接erlang客户端到oracle

有谁知道如何从Linux中的erlang客户端连接到oracle? 我想ODBC驱动程序是必需的。

从shell脚本调用erlang文件的function

我有一个文件xyz.erl其中包含一个函数fun1.I想要从Linux脚本调用它。任何指针?

如何在erlang中更改我的主机名

这是我的kvs.erl: -module(kvs). -export([start/0, store/2, lookup/1]). start() -> register(kvs, spawn(fun() -> loop() end)). store(Key, Value) -> rpc({store, Key, Value}). lookup(Key) -> rpc({lookup, Key}). rpc(Q) -> kvs ! {self(), Q}, receive {kvs, Reply} -> Reply end. loop() -> receive {From, {store, Key, Value}} -> put(Key, {ok, Value}), From ! {kvs, true}, loop(); {From, {lookup, Key}} -> From […]

如何添加一个孩子erlang主pipe?

我正在尝试向主pipe添加一个活动pipe理器,但是我得到了这样的错误: 1> test_event_call:start_link(). {ok,<0.85.0>} 2> test_event_call:start_event(). {error,{ok,{child,undefined,test_event_proc, {test_event,start,[]}, transient,200000,worker, [test_event]}}} 监督模块是test_event_call.erl: -module(test_event_call). -behaviour(supervisor). -export([start_link/0, start_event/0, init/1]). start_link() -> supervisor:start_link({local, ?MODULE}, ?MODULE, []). start_event() -> supervisor:start_child(?MODULE, {test_event_proc, {test_event, start, []}, transient, 200000, worker, [test_event]}). init(_Args) -> {ok, {{one_for_one, 1, 5}, []}}. 孩子是test_event.erl: -module(test_event). -behaviour(gen_event). -export([init/1, handle_event/2, handle_call/2, handle_info/2, terminate/2, code_change/3]). -export([start/0, log_fun/2]). start() -> {ok, _Pid} […]

ejabberdctl开始导致p1_yaml错误

我正在尝试在我的服务器上configurationeJabberd 。 我完成了安装,但是当我试图启动ejabberd使用 ejabberdctl start 它在日志文件中显示以下错误 2015-11-17 03:28:29.928 [info] <0.7.0> Application asn1 started on node ejabberd@localhost 2015-11-17 03:28:29.928 [info] <0.7.0> Application public_key started on node ejabberd@localhost 2015-11-17 03:28:29.941 [info] <0.7.0> Application ssl started on node ejabberd@localhost 2015-11-17 03:28:29.945 [warning] <0.100.0> unable to load p1_yaml NIF: {error,{load_failed,"Failed to load NIF library /lib/p1_yaml/priv/lib/p1_yaml: 'libyaml-0.so.2: cannot open shared […]

如何在CentOS上扩展ejabberd服务器机器来处理200 K连接?

我正在做一个相当不错的ejabberd实例,拥有40个核心的CPU机器和160 GB的RAM。 问题是我无法扩展到200 K并行连接。 sysctlconfiguration如下: net.ipv4.tcp_window_scaling = 1 net.core.rmem_max = 16777216 net.ipv4.tcp_rmem = 4096 87380 16777216 net.ipv4.tcp_wmem = 4096 16384 16777216 #http://linux-ip.net/html/ether-arp.html#ether-arp-flux net.ipv4.conf.all.arp_filter = 1 kernel.exec-shield=1 kernel.randomize_va_space=1 net.ipv4.conf.all.rp_filter=1 net.ipv4.conf.all.accept_source_route=0 net.ipv4.icmp_echo_ignore_broadcasts=1 net.ipv4.conf.all.log_martians = 1 net.ipv4.conf.all.accept_redirects = 0 net.ipv4.conf.all.send_redirects = 0 net.ipv4.conf.default.send_redirects = 0 net.ipv4.conf.all.secure_redirects = 0 net.ipv4.conf.default.accept_redirects = 0 net.ipv4.conf.default.secure_redirects = 0 net.ipv4.ip_local_port_range = 12000 65535 […]

为什么我的Erlang引导脚本从控制台工作,但从init系统(sysvinit,upstart,systemd)运行时不起作用?

我有一个Erlang启动脚本,可以像这样启动: /usr/bin/erl -boot /path/to/my-boot-script 它从控制台运行时工作,但是当我从systemd运行它时没有任何错误信息失败。 systemd单元文件如下所示: [Unit] Description=My daemon written in Erlang [Service] Type=simple ExecStart=/usr/bin/erl -boot /path/to/my-boot-script Restart=always [Install] WantedBy=multi-user.target 日志显示系统正确启动,然后突然终止,没有任何types的错误信息。 这到底是怎么回事?