Closed mgieseking closed 4 years ago
Maybe this has s.th. to do with this error on the server:
OnWebSocketError. Error stack trace:
org.eclipse.jetty.websocket.api.CloseException: java.util.concurrent.TimeoutException: Idle timeout expired: 300000/300000 ms
at org.eclipse.jetty.websocket.common.io.AbstractWebSocketConnection.onReadTimeout(AbstractWebSocketConnection.java:492)
at org.eclipse.jetty.io.AbstractConnection.onFillInterestedFailed(AbstractConnection.java:170)
at org.eclipse.jetty.websocket.common.io.AbstractWebSocketConnection.onFillInterestedFailed(AbstractWebSocketConnection.java:465)
at org.eclipse.jetty.io.AbstractConnection$ReadCallback.failed(AbstractConnection.java:311)
at org.eclipse.jetty.io.FillInterest.onFail(FillInterest.java:138)
at org.eclipse.jetty.io.AbstractEndPoint.onIdleExpired(AbstractEndPoint.java:406)
at org.eclipse.jetty.io.IdleTimeout.checkIdleTimeout(IdleTimeout.java:166)
at org.eclipse.jetty.io.IdleTimeout$1.run(IdleTimeout.java:50)
at java.base/java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:515)
at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264)
at java.base/java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:304)
at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128)
at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628)
at java.base/java.lang.Thread.run(Thread.java:834)
Caused by: java.util.concurrent.TimeoutException: Idle timeout expired: 300000/300000 ms
... 8 more
OnWebSocketError. Error cause stack trace:
java.util.concurrent.TimeoutException: Idle timeout expired: 300000/300000 ms
at org.eclipse.jetty.io.IdleTimeout.checkIdleTimeout(IdleTimeout.java:166)
at org.eclipse.jetty.io.IdleTimeout$1.run(IdleTimeout.java:50)
at java.base/java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:515)
at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264)
at java.base/java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:304)
at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128)
at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628)
at java.base/java.lang.Thread.run(Thread.java:834)
Websocket closed. Statuscode: 1001, reason: java.util.concurrent.TimeoutException: Idle timeout expired: 300000/300000 ms
It shouldn't have anything to do with the server. That is a timeout message indicating that the websocket was closed by inactivity after a 300 second timeout. (I put it in a new issue #33.)
The high CPU load on the client can be attributed to
In 1d8891c7b3f05420de00daeb9907642ffd0c947d I have made a change so that the physics simulation will no longer run in situations where no nodes are being dragged around. I have observed that that reduced the CPU load somewhat in the case of having a completely frozen net and just mousing over the same node over and over.
I will have a look into profiling and optimizing it more, because I still see very high CPU usage when quickly mousing over a net (probably attributable to point 1) or when dragging a node in an otherwise fully frozen net (which might involve both 1 and 2)).
OK, I just was a little bit surprised since I wasn't aware of the problem before and the problem is not existing in Firefox. For sure, we decided to not have the physics simulation running the whole time because of the CPU load, but I think the consumption in Firefox is OK, but Chromium really took it all. It is possible that this problem existed the whole time for Chromium and I just wasn't aware of it because I normally only use Chromium for testing.
I think this was also an issue in FF, but FF was a bit faster than Chrome, and your machine is fast enough that you did not notice.
I think you will find the performance to be much better now :)
The current version needs nearly all of my processor's load when I mouse over a node in the synthesis approach.