知识库

标准化实施手册及常见错误


常见部署问题

<h2>1.tomcat启动报错:java.lang.IllegalStateException: ContainerBase.addChild: start: org.apache.catalina.LifecycleException:</h2> <p>问题描述:tomcat启动时扫描类时报错 解决方案:</p> <pre><code class="language-java">一、忽略tomcat启动时扫描jar包 打开在tomcat的conf目录里面catalina.properties的文件,tomcat.util.scan.StandardJarScanFilter.jarsToSkip=\ 改为tomcat.util.scan.StandardJarScanFilter.jarsToSkip=\,* 二、更好的解决方案是更新jar包,更新Jaxen-1.1.6和dom4j-1.6.1两个jar包 </code></pre> <h2>2.java.net.BindException: 无法指定被请求的地址 (Bind failed)</h2> <p>问题描述:tomcat东方通启动时报错 解决方案: 在hosts里填加当前主机 <img src="http://60.191.64.5:16100/server/index.php?s=/api/attachment/visitFile/sign/dac6664e3fe0f6d8865dc8b3ae99d371" alt="" /> <img src="http://60.191.64.5:16100/server/index.php?s=/api/attachment/visitFile/sign/1e3e9e4f416126eb00ec5688f1feed09" alt="" /></p> <h2>3.东方通管理端重部署出现can't seal package com.risen.core.service.impl: already loaded问题</h2> <p>问题描述:平台1.0项目在东方通管理端重部署出现<code>can't seal package com.risen.core.service.impl: already loaded</code>的报错 解决方案:找应用包lib文件下的risen-pt.jar,双击jar包进入META-INF目录中编辑MANIFEST.MF文件,如果文件中设置了Sealed:true,改成false重新部署项目。具体请查看:<a href="http://60.191.64.2:1919/pages/viewpage.action?pageId=12651347">http://60.191.64.2:1919/pages/viewpage.action?pageId=12651347</a></p> <h2>4.用docker部署消息中心,初始化容器运行后一直是重启状态</h2> <p>问题描述:arrch64架构,ulimit=65525,4C16G。看docker日志提示<code>library initialization failed - unable to allocate file descriptor table - out of memoryAborted (core dumped)</code>,升级至8C32G还是提示这个 解决方案:</p> <h3>方案一:修改docker全局的ulimit参数,编辑配置文件(docker安装脚本已更新,请下载最新的使用)</h3> <p>vim /etc/systemd/system/docker.service <img src="http://60.191.64.5:16100/server/index.php?s=/api/attachment/visitFile/sign/1f60babc4e36b5e513dc7762be957a14" alt="" /> 如图所示增加以下配置</p> <pre><code class="language-shell">--default-ulimit nofile=65535:65535 --default-ulimit nproc=65535:65535</code></pre> <p>重启docker生效</p> <pre><code class="language-shell">systemctl daemon-reload systemctl restart docker </code></pre> <h3>方案二:指定单个docker初始化容器的ulimit参数</h3> <pre><code class="language-shell">docker run --ulimit nofile=65535:65535 --ulimit nproc=65535:65535 -dt -e &amp;quot;JAVA_OPTS=-Drocketmq.namesrv.addr=192.168.20.11:56667 -Dcom.rocketmq.sendMessageWithVIPChannel=false&amp;quot; --name=rmqconsole --restart=always -p 8080:8080 60.191.64.3:9963/risen/rocketmq_console_arm64</code></pre> <h2>5.修改linux系统时间的两种方式</h2> <pre><code class="language-shell">yum -y install ntpdate ntpdate ntp1.aliyun.com #阿里时钟服务器(仿格林尼治) ntpdate cn.pool.ntp.org #中国ntp服务器 hwclock –systohc #系统时间写入硬件时间 #手动指定修改&amp;amp;&amp;amp;同步硬件时间防止服务器重启时间不对 date -s &amp;quot;2021-01-01 00:00:00&amp;quot; &amp;amp;&amp;amp; hwclock --systohc</code></pre> <h2>6.libtinfo.so.5:No such file or directory</h2> <pre><code class="language-shell">当find也找不到时看看系统是不是有libtinfo.so.6.1,将6链个5 ln -s /usr/lib/aarch64-linux-gnu/libtinfo.so.6.1 /usr/lib/aarch64-linux-gnu/libtinfo.so.5</code></pre> <h2>7.pcre找不到</h2> <pre><code class="language-shell">已经安装了pcre但一直提示找不到,使用idd 查询依赖包,直接将对应包直接拷贝至对应目录下即可(看看是不是软链接)</code></pre> <p><img src="http://60.191.64.5:16100/server/index.php?s=/api/attachment/visitFile/sign/8581879c73c109b366b66a41a6d225ef" alt="" /></p> <h2>8./configure报错提示需指定生成类型</h2> <pre><code class="language-shell">configure: error: cannot guess build type; you must specify one 原本只需要执行./configure初始化处理,报错需提示指定生成类型 解决方法 ./configure --build=系统架构 #后面指定系统架构即可,如--build=x86 https://blog.csdn.net/hebbely/article/details/53993141?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522163668253216780264016654%2522%252C%2522scm%2522%253A%252220140713.130102334..%2522%257D&amp;amp;request_id=163668253216780264016654&amp;amp;biz_id=0&amp;amp;utm_medium=distribute.pc_search_result.none-task-blog-2~all~sobaiduend~default-1-53993141.first_rank_v2_pc_rank_v29&amp;amp;utm_term=configure%3A+error%3A+cannot+guess+build+type%3B+you+must+specify+one&amp;amp;spm=1018.2226.3001.4187</code></pre> <h2>9.东方通部署项目,后台提示内存溢出</h2> <p>现象:东方通控制台访问不了,项目加载不出来 问题分析:排查中间件日志,发现有内存溢出异常 <img src="http://60.191.64.5:16100/server/index.php?s=/api/attachment/visitFile/sign/015a5a07aa9c76a1814c516e49623851" alt="" /> top查看java进程内存占比,超长中间件运行内存限制 <img src="http://60.191.64.5:16100/server/index.php?s=/api/attachment/visitFile/sign/7e66195468a43b0635e919e2e440598c" alt="" /> 解决方案: 东方通JVM启动参数增加: -XX:-UseGCOverheadLimit</p> <h2>10.goodsync工具连接提示175406无法连接</h2> <p><strong>现象:</strong>175406无法连接到sftp://172.18.42.17:4522: curve25519-sha256,curve25519-sha256@libssh.org,ecdh-sha2-nistp256,ecdh-sha2-nistp384,ecdh-sha2-nistp521,diffie-hellman-group16-sha512,diffie-hellman-group18-sha512,diffie-hellman-group14-sha256 <strong>原因:</strong>ssh版本升级到8.6,OpenSSH在8.6p1版本之后默认不再采用以上算法,需要手工添加,安全级别的问题 <strong>解决方案:</strong> vim /etc/sshd_config 编辑ssh配置文件,在该文件最后加入: KexAlgorithms diffie-hellman-group1-sha1,curve25519-sha256@libssh.org,ecdh-sha2-nistp256,ecdh-sha2-nistp384,ecdh-sha2-nistp521,diffie-hellman-group-exchange-sha256,diffie-hellman-group14-sha1 保存退出 重启sshd服务即可 systemctl restart sshd</p> <h2>11.升级GLIBC版本,libc.so.6被误删除及系统崩溃解决方案(libc.so.6: cannot open shared object file报错处理)</h2> <p><img src="http://60.191.64.5:16100/server/index.php?s=/api/attachment/visitFile/sign/e66618c9b1bace3db6ca71d32af15f9a" alt="" /></p> <p><strong>现象:</strong>安装软件提示GLIBC版本过低,导致依赖安装失败,需升级GLIBC版本,导致升级失败 <strong>问题分析:</strong>当make install 完成之后,看教程上说需要将 /lib64/libc.so.6 软链接更新为 /lib64/libc-2.25.so,于是我准备删除/lib64/libc.so.6,然后新建一个指向/lib64/libc-2.25.so.然后我就删除了 /lib64/libc.so.6,结果所有命令 ls,cp,cd 等等都无法使用了 <strong>注意:</strong>libc.so.6 是c运行时库 glibc的软链接,而系统几乎所有程序都依赖c运行时库。程序启动和运行时,是根据libc.so.6 软链接找到glibc库。删除libc.so.6将导致系统的几乎所有程序不能工作。 每个glibc.so文件有它支持的libc版本,可以通过# strings /lib64/libc.so.6 |grep GLIBC_ 查看。如果程序编译的时候链接的libc库版本不在程序运行环境下的glibc库支持的libc版本之内,也会报错。 <strong>原因:</strong>libc.so.6是bash这个shell依赖的重要动态库之一,当我把这个动态库(链接)改名之后,shell找不到这个库了,所以就报找不到libc.so.6,并拒绝执行多数shell指令,也中断了ssh连接请求,而在整个过程,操作系统的kernel却还是活的,所以我原先连接的两个ssh进程还有反应(对回车、pwd等小数指令有响应),但却不能新建ssh连接</p> <h3>&lt;center&gt;不要随便改Linux/Unix的系统动态库!不要随便改Linux/Unix的系统动态库!不要随便改Linux/Unix的系统动态库!&lt;/center&gt;</h3> <p><strong>修复系统方案:</strong> 1.当已经关闭shell或者ssh连接的情况下,只能重启服务器,进入单用户模式将删除的libc.so.6重新恢复或者新建libc.so.6的软连接 进入单用户模式教程:<a href="https://www.cnblogs.com/lummg-DAY/p/11116862.html">https://www.cnblogs.com/lummg-DAY/p/11116862.html</a> 2.进入单用户模式之后,由于原系统的根目录被mount到/sysroot下,于是进入/sysroot下面,可以看到跟服务器根目录下一致的目录结构 cd /sysroot 如果是直接删除的libc-2.17.so文件,可以将备份的libc-2.17.so重新拷贝回来,本例中备份在根目录的opt下 cp /sysroot/opt/libc-2.17.so /sysroot/lib64/libc-2.17.so 注意:所有之前根目录都要替换成/sysroot,因为之前根目录已经mount在sysroot下面 如果是覆盖原软连接的,可以重新将软连接还原 /sysroot/bin/ln -sf /sysroot/lib64/libc-2.17.so /sysroot/lib64/libc.so.6 修改完成后exit退出,重启系统reboot</p>

页面列表

ITEM_HTML