It is not OM behavior It is Flash/Browser/OS behavior OM connects to 1935, if fails connects to 5080, if fails connects to 5080, if fails give up
On Wed, Sep 14, 2016 at 12:08 AM, Coscend@OM <om.insig...@coscend.com> wrote: > Dear Maxim, > > Would you happen to know why the SECOND time entering room is very fast, > under the same firewall settings? Just wanted to learn the handshake process. > > Thank you. > > Sincerely, > > Hemant K. Sabat > > Coscend Communications Solutions > Web site: www.Coscend.com > ------------------------------------------------------------------ > CONFIDENTIALITY NOTICE: See 'Confidentiality Notice Regarding E-mail Messages > from Coscend Communications Solutions' posted at: > http://www.Coscend.com/Terms_and_Conditions.html > > > -----Original Message----- > From: Maxim Solodovnik [mailto:solomax...@gmail.com] > Sent: Tuesday, September 13, 2016 11:58 AM > To: Openmeetings user-list <user@openmeetings.apache.org>; > om.insig...@coscend.com > Subject: Re: RTMP Connection Delay > > delay is caused by your FW settings > set REJECT (instead of DENY) for 1935 and it will speed-up everything > > On Tue, Sep 13, 2016 at 11:48 PM, Coscend@OM <om.insig...@coscend.com> wrote: >> Dear Maxim, >> >> Yes, we are using reverse proxy. >> Reverse proxy open: 5080 >> OS Firewall open: 1935, 5080. >> >> FIRST time entering room takes 1 MINUTE during handshake. >> Exit room. >> SECOND time entering room takes only 1 SECOND. >> >> Only in 3.1.2. In 3.0.7, no delay. >> >> >> Could this delay be caused by empty field in config.xml: >> <rtmphostlocal></rtmphostlocal>? >> Is this value stored somewhere in cache after the first login so that the >> second time it is faster? If so, where is it stored? >> >> >> Thank you. >> >> Sincerely, >> >> Hemant K. Sabat >> >> Coscend Communications Solutions >> Web site: www.Coscend.com >> ------------------------------------------------------------------ >> CONFIDENTIALITY NOTICE: See 'Confidentiality Notice Regarding E-mail >> Messages from Coscend Communications Solutions' posted at: >> http://www.Coscend.com/Terms_and_Conditions.html >> >> >> >> -----Original Message----- >> From: Maxim Solodovnik [mailto:solomax...@gmail.com] >> Sent: Tuesday, September 13, 2016 2:10 AM >> To: Openmeetings user-list <user@openmeetings.apache.org>; >> om.insig...@coscend.com >> Subject: Re: RTMP Connection Delay >> >> Are you behind the proxy? apache/nginx with port 1935 closed? >> >> On Tue, Sep 13, 2016 at 1:58 PM, Coscend@OM <om.insig...@coscend.com> wrote: >>> Dear OpenMeetings Users, >>> >>> >>> >>> In OM 3.1.2, while logging in the FIRST time as well as while >>> entering a room the FIRST time after login, there is a noticeable >>> delay during handshake (HTTP to RTMP). This was not observed in OM >>> 3.0.7 in the same environment. Could you advise us the cause of the delay >>> in 3.1.2? >>> >>> (See ID: 3 in log below) >>> >>> >>> >>> Upon exiting the room and reentering the room, there is no delay at all. >>> (See ID: 4 in log below). >>> >>> >>> >>> Could this be caused by empty field in config.xml: >>> <rtmphostlocal></rtmphostlocal>? Is this value stored somewhere in >>> cache after the first login so that the second time it is faster? If >>> so, where is it stored? >>> >>> >>> >>> >>> >>> ============= >>> >>> OpenMeetings.log >>> >>> ============= >>> >>> ID: 3 >>> >>> Response-Code: 200 >>> >>> Content-Type: application/json >>> >>> Headers: {Content-Type=[application/json], Date=[Sat, 10 Sep 2016 >>> 05:20:43 GMT]} >>> >>> Payload: {"fileExplorerObject":{"userHomeSize":0,"roomHomeSize":0}} >>> >>> -------------------------------------- >>> >>> DEBUG 09-10 00:20:43.780 ScopeApplicationAdapter.java 258296 1160 >>> org.apache.openmeetings.core.remote.red5.ScopeApplicationAdapter >>> [RTMPConnectionExecutor-2] - ----------- setRoomValues >>> >>> DEBUG 09-10 00:20:43.797 ConferenceLogDao.java 258313 52 >>> org.apache.openmeetings.db.dao.log.ConferenceLogDao >>> [RTMPConnectionExecutor-2] - [addConferenceLog]: >>> org.apache.openmeetings.db.entity.log.ConferenceLog@74ca6007 >>> >>> … >>> >>> ERROR 09-10 00:21:29.713 WicketEndpoint.java 304229 77 >>> org.apache.wicket.protocol.ws.javax.WicketEndpoint >>> [http-nio-[IP]-[port]-exec-6] - An error occurred in web socket >>> connection with id : 1 >>> >>> java.io.IOException: Broken pipe >>> >>> at sun.nio.ch.FileDispatcherImpl.write0(Native Method) >>> >>> at sun.nio.ch.SocketDispatcher.write(SocketDispatcher.java:47) >>> >>> at sun.nio.ch.IOUtil.writeFromNativeBuffer(IOUtil.java:93) >>> >>> at sun.nio.ch.IOUtil.write(IOUtil.java:65) >>> >>> at >>> sun.nio.ch.SocketChannelImpl.write(SocketChannelImpl.java:492) >>> >>> at >>> org.apache.tomcat.util.net.NioChannel.write(NioChannel.java:124) >>> >>> at >>> org.apache.tomcat.util.net.NioSelectorPool.write(NioSelectorPool.java: >>> 183) >>> >>> at >>> org.apache.coyote.http11.upgrade.NioServletOutputStream.doWriteIntern >>> a >>> l(NioServletOutputStream.java:94) >>> >>> at >>> org.apache.coyote.http11.upgrade.NioServletOutputStream.doWrite(NioSe >>> r >>> vletOutputStream.java:61) >>> >>> at >>> org.apache.coyote.http11.upgrade.AbstractServletOutputStream.writeInt >>> e >>> rnal(AbstractServletOutputStream.java:165) >>> >>> at >>> org.apache.coyote.http11.upgrade.AbstractServletOutputStream.write(Ab >>> s >>> tractServletOutputStream.java:132) >>> >>> at >>> org.apache.tomcat.websocket.server.WsRemoteEndpointImplServer.onWrite >>> P >>> ossible(WsRemoteEndpointImplServer.java:98) >>> >>> at >>> org.apache.tomcat.websocket.server.WsRemoteEndpointImplServer.doWrite >>> ( >>> WsRemoteEndpointImplServer.java:79) >>> >>> at >>> org.apache.tomcat.websocket.WsRemoteEndpointImplBase.writeMessagePart >>> ( >>> WsRemoteEndpointImplBase.java:453) >>> >>> at >>> org.apache.tomcat.websocket.WsRemoteEndpointImplBase.startMessage(WsR >>> e >>> moteEndpointImplBase.java:341) >>> >>> at >>> org.apache.tomcat.websocket.WsRemoteEndpointImplBase.startMessageBloc >>> k >>> (WsRemoteEndpointImplBase.java:273) >>> >>> at >>> org.apache.tomcat.websocket.WsSession.sendCloseMessage(WsSession.java: >>> 588) >>> >>> at >>> org.apache.tomcat.websocket.WsSession.doClose(WsSession.java:490) >>> >>> at >>> org.apache.tomcat.websocket.server.WsHttpUpgradeHandler.onError(WsHtt >>> p >>> UpgradeHandler.java:149) >>> >>> at >>> org.apache.tomcat.websocket.server.WsHttpUpgradeHandler.access$300(Ws >>> H >>> ttpUpgradeHandler.java:47) >>> >>> at >>> org.apache.tomcat.websocket.server.WsHttpUpgradeHandler$WsReadListene >>> r >>> .onError(WsHttpUpgradeHandler.java:206) >>> >>> at >>> org.apache.tomcat.websocket.server.WsHttpUpgradeHandler$WsReadListene >>> r >>> .onDataAvailable(WsHttpUpgradeHandler.java:189) >>> >>> at >>> org.apache.coyote.http11.upgrade.AbstractServletInputStream.onDataAva >>> i >>> lable(AbstractServletInputStream.java:198) >>> >>> at >>> org.apache.coyote.http11.upgrade.AbstractProcessor.upgradeDispatch(Ab >>> s >>> tractProcessor.java:96) >>> >>> at >>> org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process( >>> A >>> bstractProtocol.java:647) >>> >>> at >>> org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpo >>> i >>> nt.java:1520) >>> >>> at >>> org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.run(NioEndpoin >>> t >>> .java:1476) >>> >>> at >>> java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor. >>> j >>> ava:1145) >>> >>> at >>> java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor. >>> java:615) >>> >>> at >>> org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskTh >>> r >>> ead.java:61) >>> >>> at java.lang.Thread.run(Thread.java:745) >>> >>> DEBUG 09-10 00:21:29.715 MainPage.java 304231 223 >>> org.apache.openmeetings.web.pages.MainPage >>> [http-nio-[IP]-[port]-exec-6] - WebSocketBehavior::onClose >>> >>> ERROR 09-10 00:21:29.888 WicketEndpoint.java 304404 77 >>> org.apache.wicket.protocol.ws.javax.WicketEndpoint >>> [http-nio-[IP]-[port]-exec-6] - An error occurred in web socket >>> connection with id : 1 >>> >>> java.io.IOException: Connection reset by peer >>> >>> at sun.nio.ch.FileDispatcherImpl.read0(Native Method) >>> >>> at sun.nio.ch.SocketDispatcher.read(SocketDispatcher.java:39) >>> >>> at sun.nio.ch.IOUtil.readIntoNativeBuffer(IOUtil.java:223) >>> >>> at sun.nio.ch.IOUtil.read(IOUtil.java:197) >>> >>> at >>> sun.nio.ch.SocketChannelImpl.read(SocketChannelImpl.java:384) >>> >>> at >>> org.apache.tomcat.util.net.NioChannel.read(NioChannel.java:137) >>> >>> at >>> org.apache.coyote.http11.upgrade.NioServletInputStream.fillReadBuffer >>> ( >>> NioServletInputStream.java:136) >>> >>> at >>> org.apache.coyote.http11.upgrade.NioServletInputStream.doRead(NioServ >>> l >>> etInputStream.java:80) >>> >>> at >>> org.apache.coyote.http11.upgrade.AbstractServletInputStream.read(Abst >>> r >>> actServletInputStream.java:124) >>> >>> at >>> org.apache.tomcat.websocket.server.WsFrameServer.onDataAvailable(WsFr >>> a >>> meServer.java:60) >>> >>> at >>> org.apache.tomcat.websocket.server.WsHttpUpgradeHandler$WsReadListene >>> r >>> .onDataAvailable(WsHttpUpgradeHandler.java:185) >>> >>> at >>> org.apache.coyote.http11.upgrade.AbstractServletInputStream.onDataAva >>> i >>> lable(AbstractServletInputStream.java:198) >>> >>> at >>> org.apache.coyote.http11.upgrade.AbstractProcessor.upgradeDispatch(Ab >>> s >>> tractProcessor.java:96) >>> >>> at >>> org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process( >>> A >>> bstractProtocol.java:647) >>> >>> at >>> org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpo >>> i >>> nt.java:1520) >>> >>> at >>> org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.run(NioEndpoin >>> t >>> .java:1476) >>> >>> at >>> java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor. >>> j >>> ava:1145) >>> >>> at >>> java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor. >>> java:615) >>> >>> at >>> org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskTh >>> r >>> ead.java:61) >>> >>> at java.lang.Thread.run(Thread.java:745) >>> >>> DEBUG 09-10 00:21:31.949 SessiondataDao.java 306465 263 >>> org.apache.openmeetings.db.dao.server.SessiondataDao >>> [org.springframework.scheduling.quartz.SchedulerFactoryBean#0_Worker- >>> 1 >>> ] - >>> ****** clearSessionTable: >>> >>> DEBUG 09-10 00:21:31.952 SessiondataDao.java 306468 265 >>> org.apache.openmeetings.db.dao.server.SessiondataDao >>> [org.springframework.scheduling.quartz.SchedulerFactoryBean#0_Worker- >>> 1 >>> ] - >>> clearSessionTable: 0 >>> >>> DEBUG 09-10 00:21:31.953 MeetingReminderJob.java 306469 35 >>> org.apache.openmeetings.service.quartz.scheduler.MeetingReminderJob >>> [org.springframework.scheduling.quartz.SchedulerFactoryBean#0_Worker- >>> 2 >>> ] - MeetingReminderJob.execute >>> >>> DEBUG 09-10 00:21:34.554 MeetingReminderJob.java 309070 35 >>> org.apache.openmeetings.service.quartz.scheduler.MeetingReminderJob >>> [org.springframework.scheduling.quartz.SchedulerFactoryBean#0_Worker- >>> 2 >>> ] - MeetingReminderJob.execute >>> >>> DEBUG 09-10 00:21:34.555 SessiondataDao.java 309071 263 >>> org.apache.openmeetings.db.dao.server.SessiondataDao >>> [org.springframework.scheduling.quartz.SchedulerFactoryBean#0_Worker- >>> 1 >>> ] - >>> ****** clearSessionTable: >>> >>> DEBUG 09-10 00:21:34.559 SessiondataDao.java 309075 265 >>> org.apache.openmeetings.db.dao.server.SessiondataDao >>> [org.springframework.scheduling.quartz.SchedulerFactoryBean#0_Worker- >>> 1 >>> ] - >>> clearSessionTable: 0 >>> >>> [WARN] [NioProcessor-4] org.apache.mina.core.service.IoProcessor - >>> Create a new selector. Selected is 0, delta = 0 >>> >>> [WARN] [RTMPConnectionScheduler-2] >>> org.red5.server.net.rtmp.RTMPConnection - Closing connection - >>> inactivity timeout: session=[V6BEIJ0K2XRTE], >>> lastPongReceived=[60008 ms ago], lastPingSent=[5001 ms ago], >>> lastDataRx=[70009 ms ago] >>> >>> [WARN] [RTMPConnectionScheduler-2] >>> org.red5.server.net.rtmp.RTMPConnection - Client on >>> session=[V6BEIJ0K2XRTE] has not responded to our ping for [60008 ms] >>> and we haven't received data for [70009 ms] >>> >>> java.lang.InterruptedException >>> >>> at >>> java.util.concurrent.locks.AbstractQueuedSynchronizer.tryAcquireShare >>> d >>> Nanos(AbstractQueuedSynchronizer.java:1325) >>> >>> at >>> java.util.concurrent.Semaphore.tryAcquire(Semaphore.java:414) >>> >>> at >>> org.red5.server.adapter.ApplicationAdapter.disconnect(ApplicationAdap >>> t >>> er.java:91) >>> >>> at org.red5.server.scope.Scope.disconnect(Scope.java:352) >>> >>> at >>> org.red5.server.BaseConnection.close(BaseConnection.java:402) >>> >>> at >>> org.red5.server.net.rtmp.RTMPConnection.close(RTMPConnection.java:990 >>> ) >>> >>> at >>> org.red5.server.net.rtmpt.BaseRTMPTConnection.close(BaseRTMPTConnecti >>> o >>> n.java:131) >>> >>> at >>> org.red5.server.net.rtmpt.RTMPTConnection.close(RTMPTConnection.java: >>> 1 >>> 28) >>> >>> at >>> org.red5.server.net.rtmpt.RTMPTConnection.onInactive(RTMPTConnection. >>> j >>> ava:108) >>> >>> at >>> org.red5.server.net.rtmp.RTMPConnection$KeepAliveTask.run(RTMPConnect >>> i >>> on.java:1897) >>> >>> at >>> org.springframework.scheduling.support.DelegatingErrorHandlingRunnabl >>> e >>> .run(DelegatingErrorHandlingRunnable.java:54) >>> >>> at >>> java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:47 >>> 1 >>> ) >>> >>> at >>> java.util.concurrent.FutureTask.runAndReset(FutureTask.java:304) >>> >>> at >>> java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask. >>> a >>> ccess$301(ScheduledThreadPoolExecutor.java:178) >>> >>> at >>> java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask. >>> r >>> un(ScheduledThreadPoolExecutor.java:293) >>> >>> at >>> java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor. >>> j >>> ava:1145) >>> >>> at >>> java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor. >>> java:615) >>> >>> at java.lang.Thread.run(Thread.java:745) >>> >>> DEBUG 09-10 00:21:53.516 MultiThreadedApplicationAdapter.java 328032 >>> 507 org.apache.openmeetings.core.remote.red5.ScopeApplicationAdapter >>> [RTMPConnectionScheduler-2] - leave: Client: V6BEIJ0K2XRTE << Scope >>> [name=5, path=/default/test.om, type=ROOM, autoStart=true, >>> creationTime=1473484696211, depth=2, enabled=true, running=true] >>> >>> autoStart=true, creationTime=1473484696211, depth=2, enabled=true, >>> running=true] >>> >>> … >>> >>> DEBUG 09-10 00:21:53.557 MultiThreadedApplicationAdapter.java 328073 >>> 711 org.apache.openmeetings.core.remote.red5.ScopeApplicationAdapter >>> [RTMPConnectionScheduler-2] - appLeave: Client: V6BEIJ0K2XRTE << >>> Scope [name=test.om, path=/default, type=APPLICATION, autoStart=true, >>> creationTime=1473484588481, depth=1, enabled=true, running=true] >>> >>> [ERROR] [RTMPConnectionExecutor-4] >>> org.red5.server.service.ServiceInvoker - Error executing call: >>> Service: null Method: play Num Params: 2 0: undefined >>> 1: NaN >>> >>> java.lang.IllegalArgumentException: argument type mismatch >>> >>> at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) >>> >>> at >>> sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl. >>> j >>> ava:57) >>> >>> at >>> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAcces >>> s >>> orImpl.java:43) >>> >>> at java.lang.reflect.Method.invoke(Method.java:606) >>> >>> at >>> org.red5.server.service.ServiceInvoker.invoke(ServiceInvoker.java:189 >>> ) >>> >>> at >>> org.red5.server.net.rtmp.RTMPHandler.invokeCall(RTMPHandler.java:214) >>> >>> at >>> org.red5.server.net.rtmp.RTMPHandler.onCommand(RTMPHandler.java:276) >>> >>> at >>> org.red5.server.net.rtmp.BaseRTMPHandler.messageReceived(BaseRTMPHand >>> l >>> er.java:116) >>> >>> at >>> org.red5.server.net.rtmp.ReceivedMessageTask.call(ReceivedMessageTask. >>> java:72) >>> >>> at >>> org.red5.server.net.rtmp.ReceivedMessageTask.call(ReceivedMessageTask. >>> java:38) >>> >>> at java.util.concurrent.FutureTask.run(FutureTask.java:262) >>> >>> at >>> java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:47 >>> 1 >>> ) >>> >>> at java.util.concurrent.FutureTask.run(FutureTask.java:262) >>> >>> at >>> java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor. >>> j >>> ava:1145) >>> >>> at >>> java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor. >>> java:615) >>> >>> at java.lang.Thread.run(Thread.java:745) >>> >>> [WARN] [RTMPConnectionExecutor-4] org.red5.server.net.rtmp.Channel - >>> Non-existant stream for channel id: 8, session: DUNX6UQ7J3LP6 discarding: >>> Invoke #0: Service: null Method: play Num Params: 2 0: undefined 1: >>> NaN >>> >>> >>> >>> >>> >>> ID: 4 >>> >>> Response-Code: 200 >>> >>> Content-Type: application/json >>> >>> Headers: {Content-Type=[application/json], Date=[Sat, 10 Sep 2016 >>> 05:27:51 GMT]} >>> >>> Payload: {"fileExplorerObject":{"userHomeSize":0,"roomHomeSize":0}} >>> >>> -------------------------------------- >>> >>> DEBUG 09-10 00:27:51.330 ScopeApplicationAdapter.java 685846 1160 >>> org.apache.openmeetings.core.remote.red5.ScopeApplicationAdapter >>> [RTMPConnectionExecutor-1] - ----------- setRoomValues >>> >>> DEBUG 09-10 00:27:51.351 ConferenceLogDao.java 685867 52 >>> org.apache.openmeetings.db.dao.log.ConferenceLogDao >>> [RTMPConnectionExecutor-1] - [addConferenceLog]: >>> org.apache.openmeetings.db.entity.log.ConferenceLog@2b48c62a >>> >>> DEBUG 09-10 00:27:51.417 RecordingService.java 685933 377 >>> org.apache.openmeetings.core.remote.RecordingService >>> [RTMPConnectionExecutor-3] - getCurrentRoomClient -2- 1 >>> >>> >>> >>> >>> >>> >>> >>> Thank you. >>> >>> >>> >>> Sincerely, >>> >>> >>> >>> Hemant K. Sabat >>> >>> >>> >>> Coscend Communications Solutions >>> >>> Web site: www.Coscend.com >>> >>> ------------------------------------------------------------------ >>> >>> CONFIDENTIALITY NOTICE: See 'Confidentiality Notice Regarding E-mail >>> Messages from Coscend Communications Solutions' posted at: >>> http://www.Coscend.com/Terms_and_Conditions.html >> >> > > > > -- > WBR > Maxim aka solomax > > > > ----- > No virus found in this message. > Checked by AVG - www.avg.com > Version: 2016.0.7752 / Virus Database: 4649/13010 - Release Date: 09/13/16 > > -- WBR Maxim aka solomax