luyi122333 2011-05-11 17:14
浏览 886
已采纳

使用HttpURLConnection访问URL,TOMCAT卡死

Tomcat里这个一个应用:
客户端访问我的服务器,我再通过服务器访问别人的服务器。
如果在访问别人服务器时很久没响应就会很长时间占用一个线程,而我这边客户端访问量很多,线程同时占用很多时就会把tomcat卡死,tomcat在服务器上看cpu和内存正常,只是访问网站时打不开,是一直连接的状态。

设置了超时5S,可是本地测试,当对方服务器出问题时,我这边本地访问一直在连接,好久才报错。

谁遇到过这样的问题,怎么解决? 谢谢!

  • 写回答

2条回答 默认 最新

  • suziwen 2011-05-11 20:46
    关注

    HttpURLConnection是基于HTTP协议的,其底层通过socket通信实现。如果不设置超时(timeout),在网络异常的情况下,可能会导致程序僵死而不继续往下执行。可以通过以下两个语句来设置相应的超时:
    System.setProperty("sun.net.client.defaultConnectTimeout", 超时毫秒数字符串);
    System.setProperty("sun.net.client.defaultReadTimeout", 超时毫秒数字符串);

    其中: sun.net.client.defaultConnectTimeout:连接主机的超时时间(单位:毫秒)
    sun.net.client.defaultReadTimeout:从主机读取数据的超时时间(单位:毫秒)

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

悬赏问题

  • ¥50 切换TabTip键盘的输入法
  • ¥15 可否在不同线程中调用封装数据库操作的类
  • ¥15 微带串馈天线阵列每个阵元宽度计算
  • ¥15 keil的map文件中Image component sizes各项意思
  • ¥20 求个正点原子stm32f407开发版的贪吃蛇游戏
  • ¥15 划分vlan后,链路不通了?
  • ¥20 求各位懂行的人,注册表能不能看到usb使用得具体信息,干了什么,传输了什么数据
  • ¥15 Vue3 大型图片数据拖动排序
  • ¥15 Centos / PETGEM
  • ¥15 划分vlan后不通了