我正在运行tomcat7生产服务器好几天,然后突然被http端口无法访问 。 奇怪的是,后台进程仍在运行 ,可以看到日志。 所以我试图阻止tomcat7使用invoke-rc.d tomcat7 stop从我的debian wheezy框。 但是,这个过程仍然在那里,与国旗。 我试过kill -9 <pid>和killall -9 java ,但仍然存在进程 – 仍然占用端口,导致我无法启动新的tomcat,并且端口已经被使用错误。 我不得不重新启动。 从那里一切正常。 但是我很好奇什么可能会导致这种情况? 没有什么大的负荷。 只有一些后台进程运行,刮。 我从日志中看不到任何可疑的东西。 如果再次发生这样的事情来解决真正的问题,我该怎么办? 这是我的连接器设置: <Connector port="8080" address="127.0.0.1" maxParameterCount="500" maxPostSize="250000" scheme="http" secure="false" protocol="org.apache.coyote.http11.Http11AprProtocol" connectionTimeout="20000" disableUploadTimeout="false" connectionUploadTimeout="300000" maxThreads="500" processorCache="500" URIEncoding="UTF-8" /> 我的tomcat版本: 7.0.28-4 + deb7u1 我的虚拟机参数: JAVA_OPTS =“ – Djava.awt.headless = true -Dspring.profiles.active =”background,production“-XX:-UseSplitVerifier -javaagent:/var/lib/tomcat7/spring-instrument-3.2.3.RELEASE.jar – […]
我们正在使用部署规则集来将对旧JRE的访问权限限制在众所周知的应用程序中,但却遇到了一个问题。 一个关键业务应用程序具有以下属性(* s来保护信息): title: Enterprise Services Repository location: null jar location: http://app.*.com:52400/rep/repository/*.jar jar version: null isArtifact: true 应用程序下载一个.jnlp文件,并使用java web start来执行。 由于该位置为空,因此该位置规则不能将该应用程序作为目标。 而证书哈希方法只适用于应用程序caching(运行多次)。 如果在某些情况下caching存储处于closures状态,那么该应用程序如何成为攻击目标呢? 或者至less告诉开始运行一个较旧的JRE? 这个问题是特别注意到这个错误 谢谢!
在阅读了关于jvm内存( 这里 , 在 这里 ,其他的我忘记了…)之后,我期待我的java进程的驻留集大小大致等于当前的堆空间容量。 这不是数字所说的,它似乎大致等于最大的堆空间容量: 居民套装尺寸: # echo 0 $(cat /proc/1/smaps | grep Rss | awk '{print $2}' | sed 's#^#+#') | bc 11507912 # ps -C java -O rss | gawk '{ count ++; sum += $2 }; END {count –; print "Number of processes =",count; print "Memory usage per process =",sum/1024/count, […]
我的公司使用需要Java 6u45的Oracle应用程序的旧版本。 当然,我们希望保证安全,所以我们使用部署规则集来为该内部应用程序指定6u45,并让其他应用程序使用7u60。 现在我们已经准备好将Java 7的一半升级到7u67,Oracle应用程序打破了“部署规则集要求的版本1.6.0_45不可用”。 当然,它是可用的,它只是因为某些原因找不到它。 作为一个testing,我指定JavaTester.org也应该使用6u45,并且没有问题,它工作正常。 但是当我尝试对Oracle应用程序使用相同的configuration(7u67和6u45)时,每次都会失败。 如果我降级到7u60,它的工作。 7u65或更高,它打破。 Oracle应用程序没有改变,所以7u65 +在处理部署规则集或path等方面必须有所不同。 我完全失去了。 ruleset.xml: <?xml version="1.0"?> -<ruleset version="1.0+"> -<rule> <id location="*.mycorp.com"/> <action version="1.6.0_45" permission="run"/> </rule> -<rule> <id location="http://javatester.org"/> <action version="1.6.0_45" permission="run"/> </rule> </ruleset>
介绍 我在RHEL上运行第三方Java Spring应用程序,拒绝在从某个RHEL 6.5模板克隆的计算机上运行。 它只是在启动时死于一个假的例外(见下文)。 有问题的软件版本: RHEL 6.5 Tomcat 7.0.41 (rolled our own, almost vanilla) Spring 3.1.4.RELEASE (shipped with application) java version "1.7.0_65" OpenJDK Runtime Environment (rhel-2.5.1.2.el6_5-x86_64 u65-b17) OpenJDK 64-Bit Server VM (build 24.65-b04, mixed mode) SELinux Status: Permissive 我已经改变了类名来保护无辜,我非常怀疑实际的软件是重要的。 复制tomcat和实例目录从破碎的盒子到我的Linux桌面,并运行它。 虽然我所描述的设置被认为是一个testing环境,但我在我们的产品盒上遇到了这个问题,我不得不从DVD中安装,以使问题消失。 提到的设置是我在傀儡模块开发过程中重新遇到的问题,并设法保存和重现这个问题。 build立 应用程序使用的DB保存在本地(h2),并在tomcat的server.xml中设置。 2个RHEL 6.5模板,都是为stream浪者设置的。 破碎的模板:从DVD直接安装。 设置木偶自动设置模板的手动设置步骤,以及stream浪模板清单步骤。 工作模板:从DVD开始的Kickstart最小化设置,通过Shellscript进行Vagrant / VirtualBox自定义(使用打包packer完成) 每个模板的1个盒子都是通过vagrant设置的,都是从我们的木偶大师那里应用完全相同的木偶目录。 问题 该应用程序在启动时死于破碎的模板,但有以下例外情况: […]
AFAIK tomcat6不使用Apache std .htaccess auth,而是拥有自己的用户authentication方法。 我的问题是:如何保护它免受fail2ban蛮力攻击?
我有一个有两个节点的Glassfish(2.0)群集。 我想仅将一些额外的JVM设置传递给单个节点。 这是可configuration的吗? 至less从控制台,我看到,这种select性的configuration只适用于系统属性,但不适用于JVM设置。
我已经使用keytool生成jks密钥库,并使用jks密钥库我有csr。 我已经发送给Signing权限的同一个csr。 签名机构已经使用keytool命令给出了我已经导入的可信证书(根,中间和服务器)。 导入后,我了解了Oracle Wallet上的密码策略限制(字母数字,特殊字符和最小长度为8的组合),并且要将jks转换为钱包,密码必须相同。 我已经使用以下命令更改了密钥库密码(storepasswd,keypasswd): keytool -keypasswd -alias <Alias> -keystore KEYSTORE.jks keytool -storepasswd -keystore KEYSTORE.jks 这我已经成功了。 我使用OHS orapki工具使用以下命令将jks keystore转换为oracle钱包: orapki wallet jks_to_pkcs12 -wallet <WALLET> -keystore KEYSTORE.jks 我得到以下例外 Exception : oracle.security.crypto.util.InvalidFormatException: Malformed attribute type 我在网上寻找这个例外,但没有find一个很好的参考。 请提供一些帮助,问题是在哪里或我犯了什么错误?
更新2 我们更换了CPU,一切都很好。 这是一个破产的CPU! 更新 我们更换了主板,并且仍然得到完全相同的问题。 这是否意味着它是一个错误的CPU? 还有什么呢? 在运行Ubuntu 14.04 LTS的服务器上,我们一直在努力解决数据损坏问题。 这个问题首先performance为一个不稳定的Minecraft服务器,它会由于关卡文件中的数据损坏而崩溃。 我们很快就发现,由于networking连接变得不可靠,SSH系统常常因为接收到各种不好的数据包而断开连接(例如,“input损坏的MAC”),并发现下载到服务器的大文件将返回不一致的哈希(通过md5sum和sha1sum )指示传输过程中的损坏。 有时,不止一次地使用哈希文件甚至不会返回一致的哈希,虽然这似乎是当问题由更高的负载加剧。 此外,服务器收到来自本身的电子邮件,指出随机程序崩溃。 例如,一些电子邮件是关于cacti轮询器,这是一个PHP脚本,崩溃的消息“Segmentation fault(core dumped)”。 所有这些似乎都指向了一个硬件问题(例如坏的RAM),但是在memtest86 +出现以后(至less2遍以上),我们尝试从一个活的USB(Xubuntu 12.04)进行引导,并且没有发现下载大文件的问题。 所以这是一个软件问题,除非这是一个疯狂的巧合。 它看起来不是内核相关的,因为在启动菜单上select的前一个内核上仍然出现错误。 最近在轻负载下的testing显示networking传输被损坏,但驱动器之间(以及通过USB)和虚拟硬盘on / tmp之间的本地传输没有损坏。 但是我们确信java / Minecraft的问题是相关的,因为同一时间发生的事实,以前的工作设置的Minecraft服务器,我们恢复崩溃类似于新的。 感谢您的帮助,我们欣赏这些信息是模糊的,但是我们正处于智慧的终点。 编辑: 我在networking上尝试了一些已知的良好来源的不同副本。 其中一份不是腐败的。 所有其他人都是腐败的,但具体而言,如果我运行: vbindiff copied_file good_file 在文件的表面上随机部分有几个(2或3)错误。 但是每个错误都是4的增量。例如, 45会转到49 ,或者a9转到hex转储的ad 。 这似乎很奇怪。 编辑2: 我试着再次启动到一个现场的CD,并出现了错误。 所以这不是一个软件问题。 编辑3: 愚蠢的是,在我们的testing过程中,我们忘了拔下一个连接了外置硬盘的USB3卡。 该错误似乎已经固定 – 不是通过取出卡,而是通过没有插入外部驱动器。 在某个时候(可能是明天),我们会尝试将外部硬盘插入SATA端口,然后再查看错误是否再次发生。
我的服务器每天至less挂起一次。 它依然如此,直到我重新启动Tomcat。 我不确定哪个部分会导致这个问题,所以我正在尝试几个假设: 我的网站是通过Google的PageSpeed服务的,所以我怀疑我正在遭受DDoS攻击。 当它挂起时,我必须重新启动apache2和tomcat。 所以我不知道是哪一个造成这个问题。 当服务器挂起时,我检查mysql的进程列表,并且发现有十几个空闲连接。 这意味着数据库不会超载。 当服务器挂起时,我看到像这样的一些错误。 所以这可能是这个问题在我的Java代码和MySQL之间的连接: java.sql.SQLException: Operation not allowed after ResultSet closed at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:996) at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:935) at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:924) at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:870) at com.mysql.jdbc.ResultSetImpl.checkClosed(ResultSetImpl.java:734) at com.mysql.jdbc.ResultSetImpl.checkRowPos(ResultSetImpl.java:778) at com.mysql.jdbc.ResultSetImpl.getObject(ResultSetImpl.java:4419) at com.mypackage.SqlUtils.getResultMapList(SqlUtils.java:66) 我从数据库检索结果的集中代码是: public List<ResultMap> getResultMapList(String sql) { List<ResultMap> rows = new LinkedList<>(); try (Connection conn = getConnection(); ResultSet res = conn.createStatement().executeQuery(sql)) { while […]