bigbluebutton / bigbluebutton

Complete open source web conferencing system.
https://bigbluebutton.org
GNU Lesser General Public License v3.0
8.55k stars 5.95k forks source link

User sometimes disconnected from audio when accessing via RTMPT #2251

Closed bigbluebutton-issue-import closed 5 years ago

bigbluebutton-issue-import commented 9 years ago

Originally reported on Google Code with ID 1499

This is not deterministic, but I've noticed the following setup

  OS: 10.8.3 (64-bit)
  FireFox 20.0, Flash 11.7.700.169
  BigBlueButton: 0.81-dev [4202-2013-05-10]

All computers are running in a LAN environment.

When connect to a voice conference bridge, the audio will drop for the BigBlueButton
client running on Mac OS X. It remains connected for other computers in the LAN.

Specifically, their microphone icon will disappear on BigBlueButton running on Mac
OS X, though the headset icon remains checked.

In checking the /usr/share/red5/logs/red5.log, I can see the following errors

2013-05-12 18:31:30,237 [http-0.0.0.0-5080-exec-2] ERROR o.r.s.n.r.codec.RTMPProtocolDecoder
- Last header null not new, headerSize: 2, channelId 10
2013-05-12 18:31:30,238 [http-0.0.0.0-5080-exec-2] ERROR o.r.s.n.r.codec.RTMPProtocolDecoder
- Error decoding buffer
org.red5.server.net.protocol.ProtocolException: Header is null, check for error
        at org.red5.server.net.rtmp.codec.RTMPProtocolDecoder.decodePacket(RTMPProtocolDecoder.java:312)
~[red5-server.jar:na]
        at org.red5.server.net.rtmp.codec.RTMPProtocolDecoder.decode(RTMPProtocolDecoder.java:164)
~[red5-server.jar:na]
        at org.red5.server.net.rtmp.codec.RTMPProtocolDecoder.decodeBuffer(RTMPProtocolDecoder.java:101)
~[red5-server.jar:na]
        at org.red5.server.net.rtmpt.BaseRTMPTConnection.decode(BaseRTMPTConnection.java:200)
[red5-server.jar:na]
        at org.red5.server.net.rtmpt.RTMPTServlet.handleSend(RTMPTServlet.java:331)
[red5-server.jar:na]
        at org.red5.server.net.rtmpt.RTMPTServlet.service(RTMPTServlet.java:417) [red5-server.jar:na]
        at javax.servlet.http.HttpServlet.service(HttpServlet.java:717) [javaee-api-5.1.2.jar:5.1.2]
        at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
[catalina-6.0.36.jar:6.0.36]
        at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
[catalina-6.0.36.jar:6.0.36]
        at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)
[catalina-6.0.36.jar:6.0.36]
        at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
[catalina-6.0.36.jar:6.0.36]
        at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:470)
[catalina-6.0.36.jar:6.0.36]
        at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)
[catalina-6.0.36.jar:6.0.36]
        at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:103)
[catalina-6.0.36.jar:6.0.36]
        at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:615)
[catalina-6.0.36.jar:6.0.36]
        at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
[catalina-6.0.36.jar:6.0.36]
        at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:293)
[catalina-6.0.36.jar:6.0.36]
        at org.apache.coyote.http11.Http11NioProcessor.process(Http11NioProcessor.java:891)
[tomcat-coyote-6.0.36.jar:6.0.36]
        at org.apache.coyote.http11.Http11NioProtocol$Http11ConnectionHandler.process(Http11NioProtocol.java:750)
[tomcat-coyote-6.0.36.jar:6.0.36]
        at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.run(NioEndpoint.java:2282)
[tomcat-coyote-6.0.36.jar:6.0.36]
        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1146)
[na:1.6.0_27]
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
[na:1.6.0_27]
        at java.lang.Thread.run(Thread.java:679) [na:1.6.0_27]
2013-05-12 18:31:30,238 [http-0.0.0.0-5080-exec-2] WARN  o.r.s.n.r.codec.RTMPProtocolDecoder
- Closing connection because decoding failed: RTMPTConnection from 127.0.0.1:44989
to 10.0.3.164 (in: 3824 out: 3547)
2013-05-12 18:31:30,239 [http-0.0.0.0-5080-exec-2] ERROR o.a.c.c.C.[.[0.0.0.0].[/].[rtmpt]
- Servlet.service() for servlet rtmpt threw exception
java.lang.NullPointerException: null
        at org.red5.server.net.rtmpt.BaseRTMPTConnection.read(BaseRTMPTConnection.java:209)
~[red5-server.jar:na]
        at org.red5.server.net.rtmpt.RTMPTServlet.handleSend(RTMPTServlet.java:336)
~[red5-server.jar:na]
        at org.red5.server.net.rtmpt.RTMPTServlet.service(RTMPTServlet.java:417) ~[red5-server.jar:na]
        at javax.servlet.http.HttpServlet.service(HttpServlet.java:717) ~[javaee-api-5.1.2.jar:5.1.2]
        at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
~[catalina-6.0.36.jar:6.0.36]
        at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
~[catalina-6.0.36.jar:6.0.36]
        at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)
~[catalina-6.0.36.jar:6.0.36]
        at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
[catalina-6.0.36.jar:6.0.36]
        at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:470)
[catalina-6.0.36.jar:6.0.36]
        at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)
[catalina-6.0.36.jar:6.0.36]
        at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:103)
[catalina-6.0.36.jar:6.0.36]
        at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:615)
[catalina-6.0.36.jar:6.0.36]
        at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
[catalina-6.0.36.jar:6.0.36]
        at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:293)
[catalina-6.0.36.jar:6.0.36]
        at org.apache.coyote.http11.Http11NioProcessor.process(Http11NioProcessor.java:891)
[tomcat-coyote-6.0.36.jar:6.0.36]
        at org.apache.coyote.http11.Http11NioProtocol$Http11ConnectionHandler.process(Http11NioProtocol.java:750)
[tomcat-coyote-6.0.36.jar:6.0.36]
        at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.run(NioEndpoint.java:2282)
[tomcat-coyote-6.0.36.jar:6.0.36]
        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1146)
[na:1.6.0_27]
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
[na:1.6.0_27]
        at java.lang.Thread.run(Thread.java:679) [na:1.6.0_27]
2013-05-12 18:32:33,742 [Red5_Scheduler_Worker-10] INFO  o.r.s.net.rtmpt.RTMPTConnection
- RTMPT client diconnected due to inactivity of 63494 ms

But again it's not deterministic.  I've left the same scenario running for over an
hour, and there are no disconnects.

Reported by ffdixon on 2013-05-12 19:19:12

bigbluebutton-issue-import commented 9 years ago

Reported by ffdixon on 2013-05-12 19:19:54

bigbluebutton-issue-import commented 9 years ago

Reported by ffdixon on 2013-05-13 01:48:24

bigbluebutton-issue-import commented 9 years ago

Reported by ffdixon on 2013-07-12 22:00:06

bigbluebutton-issue-import commented 9 years ago
See update

  https://groups.google.com/d/msg/bigbluebutton-dev/TlvTzqj7ppk/P0qMRL4Tex4J

Specifically, adding

  proxy_set_header  Connection: Keep-Alive;

to

location ~ (/open/|/close/|/idle/|/send/|/fcs/) {
          proxy_pass         http://127.0.0.1:5080;
          proxy_redirect     off;
          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_buffering            off;

          keepalive_requests         1000000000;
          proxy_set_header  Connection: Keep-Alive;
      }

Reported by ffdixon on 2013-12-10 15:56:10

bigbluebutton-issue-import commented 9 years ago

Reported by ffdixon on 2014-01-24 17:51:33

bigbluebutton-issue-import commented 9 years ago
As mentioned in the forum thread, setting nginx config helps in maintaining connection
when using RTMPT.

Reported by ritzalam on 2014-07-28 21:14:34

bigbluebutton-issue-import commented 9 years ago
Need to do more testing on this to see if updating the nginx configuration fixed the
issue.

Reported by ffdixon on 2014-10-25 04:57:32

EduardoSoares commented 8 years ago

Hello, I am using a 0.91 BBB server installed at an Ubuntu 14.04.4 LTS with 8GB RAM space enough, 100 Mbits/sec bandwidth (symmetrical) and today (28-03-2016) after 1 hour of normal use by only 4 participants (1 moderator - me using desktop sharing - and 3 listeners) the listeners were first disabled on capacity to use the audio feature and then disconnected after 6 minutes). I am using a firewall, but with all released data traffic (internally and externally) in the ports/protocols mentioned in official documentation (http://docs.bigbluebutton.org/install/install.html).

There you are some additional logs context:

-- ERRORS found in /usr/share/red5/log/* -- /usr/share/red5/log/error.log:2016-03-28 14:28:10,332-03:00 [http-nio-0.0.0.0-5080-exec-3] ERROR o.r.s.n.r.codec.RTMPProtocolDecoder - Last header null not new, headerS ize: 2, channelId 21 /usr/share/red5/log/error.log:2016-03-28 14:33:10,419-03:00 [http-nio-0.0.0.0-5080-exec-7] ERROR o.r.s.n.r.codec.RTMPProtocolDecoder - Last header null not new, headerS ize: 3, channelId 25

-- Exceptions found in /usr/share/red5/log/* -- /usr/share/red5/log/error.log:org.red5.server.net.protocol.ProtocolException: Header is null, check for error /usr/share/red5/log/error.log:org.red5.server.net.protocol.ProtocolException: Header is null, check for error /usr/share/red5/log/red5.log:org.red5.server.net.protocol.ProtocolException: Header is null, check for error

EOF

ffdixon commented 8 years ago

Hi EduardoSoares,

Please don't hijack issues that are unrelated (the original issues is RTMPT, which is not your case). Post to bigbluebutton-setup mailing list

https://groups.google.com/forum/#!forum/bigbluebutton-setup

and the community can help you there. If, in the end, there is an but or enhancement needed with BigBlueButton itself, we'll open a new issue here to track it.

EduardoSoares commented 8 years ago

Hi Fred, Sorry about my attention's mistake. Yep, I will do it.

Regards,

Eduardo.

ffdixon commented 5 years ago

Closing this issue as we are moving to an HTML5 client.