简体   繁体   中英

Elixir - Phoenix - function :erl_posix_msg.message/1 is undefined

I have two server running a pretty simple Phoenix framework API and every week or so, one of the servers starts throwing 502 errors.

15:35:08.260 [error] 'File operation error: emfile. Target: /usr/lib/erlang/lib/stdlib-3.2/ebin/erl_posix_msg.beam. Function: get_file. Process: code_server.'

15:35:08.323 [error] 'File operation error: emfile. Target: erl_posix_msg.beam. Function: get_file. Process: code_server.'

15:35:08.324 [error] GenServer #PID<0.6569.17> terminating
** (UndefinedFunctionError) function :erl_posix_msg.message/1 is undefined (module :erl_posix_msg is not available)
    (stdlib) :erl_posix_msg.message(:emfile)
    (redix) lib/redix.ex:393: Redix.format_error/1
    (redix) lib/redix/connection.ex:108: Redix.Connection.connect/2
    (connection) lib/connection.ex:622: Connection.enter_connect/5
    (stdlib) proc_lib.erl:247: :proc_lib.init_p_do_apply/3
Last message: nil
State: %Redix.Connection{backoff_current: nil, opts: [socket_opts: [], sync_connect: false, backoff_initial: 500, backoff_max: 30000, log: [disconnection: :error, failed_connection: :error, reconnection: :info], exit_on_disconnection: false, host: "redis.host.not", port: 6379], receiver: nil, shared_state: nil, socket: nil}

15:35:08.324 [error] Ranch protocol #PID<0.6568.17> (:cowboy_protocol) of listener Auth.Endpoint.HTTP terminated
** (exit) an exception was raised:
    ** (UndefinedFunctionError) function :erl_posix_msg.message/1 is undefined (module :erl_posix_msg is not available)
        (stdlib) :erl_posix_msg.message(:emfile)
        (redix) lib/redix.ex:393: Redix.format_error/1
        (redix) lib/redix/connection.ex:108: Redix.Connection.connect/2
        (connection) lib/connection.ex:622: Connection.enter_connect/5
        (stdlib) proc_lib.erl:247: :proc_lib.init_p_do_apply/3

If I just restart phoenix server, boom, everything starts working again. Obviously this isn't a scalable solution, but I'm struggling to diagnose what's going on.

Any help would be sweet.

Thanks

阅读OTP erl_posix_msg模块,您可以看到它只是“打开的文件太多”的代码。

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM