1~1024之间的端口号是保留端口,通常是为特定目的预留的。虽然你的问题不是由于保留端口引起的,但是仍然建议你不要随意使用保留端口作为自定义服务的端口,如果你能早早遵循这一规则压根就不会遇到这个问题。就像编程时不要用某些保留字作为变量名的道理一样,虽然用了平时可能也没事,但保不住哪天就给你来个莫名其妙的问题。

问题来源

因为经常有各种各样的大小项目要跑,全部放一个tomcat很慢,所以俺平时喜欢新建80-89这10个tomcat,分别放不同的项目。以前还一直用的好好的,昨天突然发现87端口的tomcat怎么都访问不了,本来大不了换一个别的端口就了事,但是我觉得问题既然碰到了就要彻底排查,不然下次再碰到就又没辙了。

这个奇怪的问题纠结了我将近一天左右,记录下来是为了让后来人少走坑爹路。如果你想直接知道原因而不管我这没啥意义的排查过程,直接滚动到最后就可以了。

现象描述

tomcat能正常启动,也没提示什么端口冲突,但就是访问不了,要是页面提示个什么404啥的也还OK啦,但偏偏提示的是“网络连接错误”!这尼玛,真是灵异事件啊,然后就尝试着找原因。

打开浏览器只看到这样的页面:

排查

首先当然是试一下其它端口,发现86、88端口均正常,唯独87不正常,然后就查看端口占用情况,仔细对比不同端口启动时端口占用情况,开始还欣喜的以为发现问题了,因为其它端口启动时都至少有4个相关记录,唯独87端口只有3条,但后来仔细对比来对比去也没发现什么有用的价值,具体过程就不说了,反正就是没从这条路上找到原因,贴上一张并没有什么价值的对比图:

然后想,tomcat确实成启动了,只是浏览器不知为何访问不了而已,要不我telnet试试?然后就试试telnet localhost 87,发现也没问题啊,这说明端口确实被tomcat绑定了啊,可为啥就是访问不了呢?

然后我注意到上面查看端口占用时貌似唯独87端口没有类似127.0.0.1:87地址出现,那是不是直接用ip可以呢?但是http://172.16.4.97:87http://localhost:87http://127.0.0.1:87等都试了下还是不行。

再然后,是不是换别人的电脑可以呢?拿一台局域网内的另外PC试了下,还是不行(特别说明:用的是大数字安全浏览器)。

再想想,是不是eclipse里面出了什么问题呢?我就直接到外面跑一个tomcat绑定87端口试一下,还是不行!

那又是不是我的tomcat7出了问题呢?然后又换tomcat6绑定一个87端口,再试,还是不行!

我滴个妈呀,这到底是个什么鬼啊[抓狂][抓狂],真是快疯掉了!

重头戏来了

就在我一筹莫展的时候,就在一个小时以前,我说,要不我换个浏览器试试?总不会跟浏览器有关系吧?(回头想想我也不记得我是怎么想到的)

之前一直用的是“伟大的”大数字极速浏览器(为啥说伟大,后面你就懂了),我换了Chrome试了下,虽然也还是访问不了,但是发现了一个非常关键的错误信息:ERR_UNSAFE_PORT

你说啥?不安全的端口?咋个不安全了勒?我就郁闷了,顺手度娘了一下,果然发现有用信息了,貌似是浏览器做了手脚,没等我仔细看,我就迫不及待的多试了几个浏览器,试了下火狐,嘿嘿,火狐说的更直白一点:

此地址使用了一个通常用于网络浏览以外目的的端口。出于安全原因,Firefox 取消了该请求。这下总算明白了,可以十分确定就是浏览器做的手脚!再试了下IE,嘿嘿,我大IE这次竟然很听话,竟然没啥问题(难不成说我早用IE就好了?)。。。

总结

纠结了我这么久,原来罪魁祸首竟然是我大数字急速浏览器啊,由于Chrome一些限制,一直习惯直接把它当成chrome来用,毕竟内核更新也比较快,也没管其它太多,谁曾想,哎!不过好在问题原因总算找到了!

解决

啥?你以为这就完了?当然不是,找到问题原因了当然还要找到解决方法。

Chrome

开始菜单搜索“Chrome”,右键打开文件位置,选中的是一个快捷方式,右键属性,增加以下参数:

// 表示允许的端口,多个端口逗号分隔
--explicitly-allowed-ports=87,6666,556,6667

示例如下:

"C:\Program Files (x86)\Google\Chrome\Application\chrome.exe" --explicitly-allowed-ports=87,6666,556

再启动,访问,发现没有问题了。

火狐

地址栏输入about:config,然后右键新建一个字符串键,名称为network.security.ports.banned.override,内容就是允许的端口,多个端口逗号分隔,如87,6666,556,然后确定,再试,OK了(貌似无需重启浏览器)。

IE

IE?IE没问题啊,还解决个球啊~~~

附录

Google Chrome 默认非安全端口列表,虽然以上方法可以解决问题,但还是尽量避免吧,谁想没事找麻烦啊:

  1,    // tcpmux
7, // echo
9, // discard
11, // systat
13, // daytime
15, // netstat
17, // qotd
19, // chargen
20, // ftp data
21, // ftp access
22, // ssh
23, // telnet
25, // smtp
37, // time
42, // name
43, // nicname
53, // domain
77, // priv-rjs
79, // finger
87, // ttylink
95, // supdup
101, // hostriame
102, // iso-tsap
103, // gppitnp
104, // acr-nema
109, // pop2
110, // pop3
111, // sunrpc
113, // auth
115, // sftp
117, // uucp-path
119, // nntp
123, // NTP
135, // loc-srv /epmap
139, // netbios
143, // imap2
179, // BGP
389, // ldap
465, // smtp+ssl
512, // print / exec
513, // login
514, // shell
515, // printer
526, // tempo
530, // courier
531, // chat
532, // netnews
540, // uucp
556, // remotefs
563, // nntp+ssl
587, // stmp?
601, // ??
636, // ldap+ssl
993, // ldap+ssl
995, // pop3+ssl
2049, // nfs
3659, // apple-sasl / PasswordServer
4045, // lockd
6000, // X11
6665, // Alternate IRC [Apple addition]
6666, // Alternate IRC [Apple addition]
6667, // Standard IRC [Apple addition]
6668, // Alternate IRC [Apple addition]
6669, // Alternate IRC [Apple addition]

http://www.cnblogs.com/liuxianan/p/err_unsafe_port.html

记一次tomcat故障排查(转)的更多相关文章

  1. 坑爹坑娘坑祖宗的87端口(记一次tomcat故障排查)

    原贴如下 坑爹坑娘坑祖宗的87端口(记一次tomcat故障排查) 虽然我用的是PHPstudy部署的dedecms,还是一样栽倒这个坑里了. 总结经验:本地测试使用8000~9000的端口比较安全.

  2. Atitit.播放系统的选片服务器,包厢记时系统 的说明,教程,维护,故障排查手册p825

    Atitit.播放系统的选片服务器,包厢记时系统 的说明,教程,维护,故障排查手册p825 1. 播放系统服务器方面的维护2 1.1. 默认情况下,已经在系统的启动目录下增加了俩个启动项目2 1.2. ...

  3. Atitit. 包厢记时系统 的说明,教程,维护,故障排查手册v2 pb25.doc

    Atitit. 包厢记时系统 的说明,教程,维护,故障排查手册v2 pb25.doc 1. 服务器方面的维护1 1.1. 默认情况下,已经在系统的启动目录下增加了 个启动项目1 1.2. 后台服务.保 ...

  4. 解Bug之路-记一次存储故障的排查过程

    解Bug之路-记一次存储故障的排查过程 高可用真是一丝细节都不得马虎.平时跑的好好的系统,在相应硬件出现故障时就会引发出潜在的Bug.偏偏这些故障在应用层的表现稀奇古怪,很难让人联想到是硬件出了问题, ...

  5. Java线上应用故障排查之二:高内存占用

    搞Java开发的,经常会碰到下面两种异常: 1.java.lang.OutOfMemoryError: PermGen space 2.java.lang.OutOfMemoryError: Java ...

  6. 一次线上OOM故障排查经过

    转贴:http://my.oschina.net/flashsword/blog/205266 本文是一次线上OOM故障排查的经过,内容比较基础但是真实,主要是记录一下,没有OOM排查经验的同学也可以 ...

  7. ------ 新春第一炮:阶乘算法性能分析与 double fault 蓝屏故障排查 Part I ------

    -------------------------------------------------------------------------- 春节期间闲来无事想研究下算法,上机测试代码却遇到了 ...

  8. java线上应用故障排查之二:高内存占用【转】

    前一篇介绍了线上应用故障排查之一:高CPU占用,这篇主要分析高内存占用故障的排查. 搞Java开发的,经常会碰到下面两种异常: 1.java.lang.OutOfMemoryError: PermGe ...

  9. 【JVM】线上应用故障排查

    高CPU占用 一个应用占用CPU很高,除了确实是计算密集型应用之外,通常原因都是出现了死循环. 根据top命令,发现PID为28555的Java进程占用CPU高达200%,出现故障. 通过ps aux ...

随机推荐

  1. POJ1201 差分约束

    给定ai,bi, ci 表示区间[ai,bi]内至少有ci个点, 要求对于所有给定的ai,bi,ci,  至少多少个点才能满足题目的条件 重做这一题学到的一点是, 可以设变量来表示一些东西,然后才能找 ...

  2. wamp的安装使用(转)

    这次需要记录一下我搭建web服务器的过程. 第一步,确定自己要使用的平台:这次我用的是windows2008 server版本 第二步,计划是想要纯手工的安装apache.php等.但是我们可以下载一 ...

  3. 开源Office Word——DocX

    1.前言 请阅读前请看以下这位大神的文章 http://www.cnblogs.com/asxinyu/archive/2013/02/22/2921861.html 另附两个附件 1.DocX.DL ...

  4. Java重命名文件

    File file = new File("D:\\aa\a.txt");     file.renameTo(new File("D:\\aa\\b.txt" ...

  5. EJB通过ANT提高EJB应用程序的开发效率、无状态发展本地接口bean、开发状态bean

    该jboss集成到eclipse 关掉Jboss控制台新闻Ctrl+c,在MyEclipse→Servers→Jboss可配置JBoss. 通过ANT提高EJB应用的开发效率 在HelloWorld ...

  6. 强联通块tarjan算法

    http://poj.org/problem?id=1236第一问:需要几个学校存在软件,才能通过传递,使得所有的学校都有软件 用tarjan算法求出强联通分量后,将每个联通分量缩成一个点,那么问题1 ...

  7. 特征选择(三)-K-L变换

    上一讲说到,各个特征(各个分量)对分类来说,其重要性当然是不同的. 舍去不重要的分量,这就是降维. 聚类变换觉得:重要的分量就是能让变换后类内距离小的分量. 类内距离小,意味着抱团抱得紧. 可是,抱团 ...

  8. 为什么Redis比Memcached易

    GitHub版本号地址: https://github.com/cncounter/translation/blob/master/tiemao_2014/Redis_beats_Memcached/ ...

  9. Directx11学习笔记【十九】 摄像机的实现

    本文由zhangbaochong原创,转载请注明出处:http://www.cnblogs.com/zhangbaochong/p/5785100.html 之前为了方便观察场景,我们采用的方法是鼠标 ...

  10. Facebook新框架React Native,一套搞定App开发[转]

    Facebook新框架React Native,一套搞定App开发 本文来自微信公众号“给产品经理讲技术”(pm_teacher),欢迎关注. 做为一名产品经理,你是否遇到过这样的窘境,“帮我把字体调 ...