`
timerri
  • 浏览: 47127 次
  • 性别: Icon_minigender_1
  • 来自: 武汉
社区版块
存档分类
最新评论

socketchannel性能不如serversocket?

    博客分类:
  • java
阅读更多
今天在扩展jetty 6.1的时候发现在jetty中使用socketchannel 居然性能还不如用serversocket

我用的是微软的web application stress tool.

先用用20个线程并发访问,

serversocket 能达到1000次访问/秒
socketchannel 只能达到600次访问/秒

当我把测试线程数增加到200个时
他们都下降到了20次访问/秒

我也测试了resin,数据跟使用serversocket的相差不大。

现在还不知道到底是jetty的问题还是socketchannel的问题。还需要再研究
分享到:
评论
6 楼 timerri 2007-10-02  
一牵扯到性能,jni就成了java的救 命稻草。

以后针对高并发的项目,我一定用jni写连接和管理线程
5 楼 birdjavaeye 2007-10-02  
用jni的话,试试lighttpd+jni,jni写成lighttpd的mod,应该能比apache更快
或者试试ngnix+jni
4 楼 timerri 2007-09-30  
今天用isapi+jni做了iis和java的桥,性能相当的不错
居然比.net快不少(可能因为负载不同造成的)

resin的isapi怎么就没想到用jni做呢。搞得还是牛拉车的速度。

今晚准备装fedora,试试看用apache mod做java桥效率如何。
3 楼 dennis_zane 2007-09-29  
你传输的数据量应该不大吧,数据量大的时候,使用传统io模型线程将浪费比较多的时间在等待上面,nio此时应该比较有优势。
2 楼 timerri 2007-09-29  
今天又测了apache2.2.6,windows2003下500连接的性能沦落到了跟tomcat一个档次,30次/秒
iis依然是1000+次/秒
看来windows下iis的优势无法改变了。

我要再分别用delphi和.net写服务端试试看。
1 楼 daquan198163 2007-09-28  
nio的优势在于防止线程过多,提高可伸缩性吧?
性能就未必会更好

相关推荐

    使用非阻塞ServerSocketChannel、SocketChannel代替ServerSocket和Socket

    在Java编程中,传统的Socket API基于阻塞I/O模型,对于高并发的网络应用,可能会导致服务器性能瓶颈。为了解决这个问题,Java引入了非阻塞I/O(Non-blocking I/O,简称NIO),其中的核心类包括ServerSocketChannel和...

    java socket异步长连接demo

    SocketChannel serverChannel = serverSocket.accept().getChannel(); serverChannel.configureBlocking(false); SelectionKey writeKey = serverChannel.register(selector, SelectionKey.OP_WRITE); ``` 接下来,...

    Java NIO原理分析及代码实例

    SocketChannel client = serverSocket.accept(); client.configureBlocking(false); client.register(selector, SelectionKey.OP_READ); } else if (selectedKey.isReadable()) { SocketChannel client = ...

    高级 socket 通信

    3. **零拷贝**:NIO支持直接内存访问,数据可以从SocketChannel直接写入到网络,或者从网络直接读入到SocketChannel,减少了数据在用户空间和内核空间之间的拷贝,提升了性能。 4. **异常处理**:在SocketChannel中...

    io操作性能资料

    在处理大量并发连接时,可以使用NIO的SocketChannel和ServerSocketChannel,结合Selector实现高效的服务器端编程。 除了基本的IO操作,还有许多库和框架如Apache Commons IO、Google Guava等提供了额外的功能和优化...

    Socket实现聊天室功能

    Socket编程是网络编程中的基础部分,它允许两个网络应用程序通过TCP/IP协议进行通信。在这个案例中,我们将讨论如何使用Socket来实现一个简单的聊天室...实际应用中,还需要考虑错误处理、安全性、性能优化等多个方面。

    java NIO 开发技术

    在阻塞I/O模型中,当服务端的`ServerSocket.accept()`方法被调用时,会阻塞等待直到有客户端连接,然后为每个客户端创建一个新的线程来处理请求。这种方式在面对大量并发连接时,会因为创建大量线程而消耗大量资源,...

    android本地实现tcp连接

    - 使用NIO(非阻塞I/O)或SocketChannel可以提升性能,尤其是在高并发场景下。 总的来说,Android本地实现TCP连接需要理解TCP协议的基础知识,然后利用java.net.Socket和ServerSocket类进行编程。实际应用中还需要...

    Socket通信Java代码

    Java NIO库提供了`java.nio.channels.SocketChannel`,它支持非阻塞I/O操作,可以提高高并发场景下的性能。`SocketChannel`与`ServerSocketChannel`配合使用,能实现高效的Socket通信。 总结,Java中的Socket通信是...

    JAVA Socket 教程

    同时,为了提高服务器的并发性能,通常会在`serverSocket.accept()`返回新Socket后启动新的线程来处理客户端请求,这样服务器可以同时处理多个客户端连接。 五、高级特性 Java Socket还支持SSL/TLS加密通信,确保...

    阻塞通信和非阻塞通信的区别

    ServerSocketChannel是ServerSocket的替代类,支持阻塞通信和非阻塞通信。SocketChannel是Socket的替代类,支持阻塞通信和非阻塞通信。Selector用于监控ServerSocketChannel和SocketChannel的事件,例如接收连接就绪...

    一个经典的java 套接字传输范例

    `java.nio.channels`包下的`ServerSocketChannel`和`SocketChannel`可以替代传统的`ServerSocket`和`Socket`,实现更高效的网络编程。 10. **实战示例** 一个简单的Java套接字服务器和客户端示例: - 服务器端:...

    Java网络编程(5).pdf

    在NIO中,Channel的主要实现类有ServerSocketChannel、SocketChannel、DatagramChannel等,它们分别对应于传统网络编程中的ServerSocket、Socket和UDP。 4. Selector(选择器):Selector允许单线程管理多个Channel...

    java_socket编程

    对于高性能的网络应用,Java NIO(非阻塞I/O)提供了SocketChannel,它可以配合Selector进行多路复用,处理多个连接,提高服务器的并发能力。 9. **SSL/TLS安全通信**: 如果需要加密通信,Java还提供了JSSE...

    java socket Bio Nio example

    Java Socket编程是网络通信的核心...通过理解并掌握这两种I/O模型,开发者可以根据实际需求选择合适的方式,优化服务器性能。在压缩包中的"Socket"文件可能包含了具体的BIO和NIO的Java实现示例,可以进一步学习和研究。

    Jav socket 编程

    - **套接字通道(SocketChannel)**:NIO中的SocketChannel可以替代传统的Socket,提供选择器(Selector)进行多路复用。 **五、实例应用** Java Socket编程广泛应用于各种服务端应用,如HTTP服务器、FTP服务器、...

    nio的socket

    在NIO中,Socket通信不再局限于传统的`java.net.Socket`和`java.net.ServerSocket`,而是通过`java.nio.channels.SocketChannel`和`java.nio.channels.ServerSocketChannel`进行。 1. **SocketChannel**:这是NIO中...

    net.zip_zip

    以上只是Java网络编程的部分核心概念,实际项目中还需要考虑性能优化、网络协议的理解、错误处理以及安全性等问题。"net.zip"中的文件很可能包含这些概念的示例代码,通过学习和实践这些代码,开发者可以更好地理解...

    java selector类的用法举例

    2. **学校教务处(Selector)**:负责统一管理老师(ServerSocket)和学生(SocketChannel)。 3. **老师(ServerSocket)**:对应服务端的Socket,负责接收多个学生(客户端连接)。 4. **学生(SocketChannel)**...

Global site tag (gtag.js) - Google Analytics