Yeauty

Results 244 comments of Yeauty

> > 020-02-24 16:09:20 INFO [main] org.yeauty.standard.ServerEndpointExporter 77 - Netty WebSocket started on port: 8089 with context path(s): '/ws/{userId}' > > 2020-02-24 16:09:22 INFO [main] org.yeauty.standard.ServerEndpointExporter 77 - Netty WebSocket...

> 我多加了一个这个类ServerEndpointExporter,才导致会加载2边 > > ``` > @Configuration > public class WebSocketConfig { > > @Bean > public ServerEndpointExporter serverEndpointExporter() { > return new ServerEndpointExporter(); > } > > } >...

> 我加上无参构造没有报错。但是我想让让类加载时,就加载这个有参构造,有没有什么好的方法,求指教一下,谢谢 Lis\ channals是你自己传进来的吗?

> Channal是个自己写的接口,这个有参构造是自动的加载的,自己传进来的,VideoBusiness 这个类实现了Channal接口,这个有参构造相当于会把实现Channal接口的类全部放到map中,这个作用 channals从哪里来的。即使是自己的接口,实现类在哪。 如果对象不是你创建的,那么你就没办法使用有参构造。

> ![1582601266(1)](https://user-images.githubusercontent.com/22722591/75212767-dfe7be00-57c2-11ea-94f4-90f8a7e09361.jpg) > channals不用自己手动传进去,因为VideoBusiness类上面加了@component注解,交给spring管理的,所以有参构造会自动加载 这个类的对象既不是spring生成,也不交给spring管理,所以没办法这么做。 只能自己想办法实现,如:无参构造通过调用某个静态方法将这个List设置进来

json解析是CPU密集型。 5000连接的发送意味着发5000次,也就是解析5000次。 推送代码改成 ```java byte[] dataByte = JSON.toJSONString(acnTradeSocket).getBytes(); ByteBuf buf = PooledByteBufAllocator.DEFAULT.buffer(dataByte.length).writeBytes(dataByte); mapSession.forEach((x, session) -> session.sendText(buf.retainedDuplicate())); ``` 减少json解析次数,并利用zero copy节省cpu对内存的拷贝

看上去有点奇怪,建议看看CPU高对应的线程是哪个

> 那些高的,都是我发送消息时出现的。我在看看吧 Windows上可以用Process Explorer先定位到占用CPU多的线程,然后再jstack把线程dump出来,找到对应的线程,看看在干啥

可能由于工具抓的时间间隔不够短,CPU飙升的瞬间没抓到。 可以尝试while(true)的发,看看能抓到线程不