centos openfile?centos7
大家好,今天小编来为大家解答centos openfile这个问题,centos7很多人还不知道,现在让我们一起来看看吧!
centos7+tomcat登陆超时
在工作中开发找到说,项目日志访问域名报错,报错如下:
这是第二次遇到的报错,所以把它记录下来,在服务器curl是另外一种结果,服务器结果如下:
经过第一次的经验就知道,本机的jdk是不信任你这域名的,然后我将这个域名的私钥证书,就是.crt结尾的证书转换成.cer结尾的证书,进行导入到本机jdk里面就可以实现程序的信任了,好了话不多说操作如下。
1.拿到私钥证书之后,使用ie浏览器导入到浏览里面。
找到你的私钥证书
选择你的组
这就是导入成功了。
开始导出.cer结尾的证书,选择你导入证书的组然后点击导出来
选择你要导出的证书编码类型
选择要导出的位置以及导出证书的名字
导出完成。
得到了一个后缀为.cer结尾的证书。然后接下来导入到我们需要的服务器jdk中即可
2.liunx导入证书的命令为如下(本片文章jdk是以yum安装的jdk为主导入的):
(1)找打jdk安装的目录
# pwd
/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.312.b07-1.el7_9.x86_64/jre/lib/securi
(2)上传要导入的证书
(3)进入jdk安装目录,然后进行导入证书
#导入证书命令
# keytool-import-trustcacerts-alias tomcat-file/home/cert/111.cer-keystore"/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.312.b07-1.el7_9.x86_64/jre/lib/security/cacerts"-storepass changeit
#删除证书命令
# keytool-delete-alias server-keystore D:\jdk1.6.0\jre\lib\security\cacerts-storepass changeit
这样再用程序调用这域名就不会报超时了。
too many open files这种错误应该怎么解决
Tomcat Too Many Open Files;Too many open files tomcat 6.0报“too many open files Too many open files问题的解决 linux故障解决,tomcat故障处理,too many open files故障处理
发表于 2011年 01月 06日由 admin
Tomcat Too Many Open Files;Too many open files tomcat 6.0报“too many open files Too many open files问题的解决
linux故障解决,tomcat故障处理,too many open files故障处理这个问题是第一次在Linux环境下碰到,把解决的方法记录下来。
服务器配置:两个双核CPU 2.0G,4G内存
操作系统:CentOS,内核2.6.18
应用1、搜索服务器,负责全站的搜索和提供内容相关性接口
应用服务器:Tomcat6.0.16+Apache2.2.8,其中两个Tomcat实例,一个对外提供服务,一个对内管理索引(创建、删除、检索等)
Web方案:Solr1.3(With Solr Client For Java)、Java Servlet(Web Service接口)
应用2、类似于百度知道的一个应用
应用服务器:与搜索服务器共享Apache2.2.8
Web方案:Php+Mysql
问题症状:搜索服务停止,应用2响应超时,牵连全站的搜索接口调用内容的输出,查看Catalina日志,大量的如下信息:
<!--[if!supportLineBreakNewLine]-->
Java代码
org.apache.jk.common.ChannelSocket acceptConnections
WARNING: Exception executing accept
java.net.SocketException: Too many open files
at java.net.PlainSocketImpl.socketAccept(Native Method)
at java.net.PlainSocketImpl.accept(Unknown Source)
at java.net.ServerSocket.implAccept(Unknown Source)
at java.net.ServerSocket.accept(Unknown Source)
at org.apache.jk.common.ChannelSocket.accept(ChannelSocket.java:295)
at org.apache.jk.common.ChannelSocket.acceptConnections(ChannelSocket.java:641)
at org.apache.jk.common.SocketAcceptor.runIt(ChannelSocket.java:852)
at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:684)
at java.lang.Thread.run(Unknown Source)
org.apache.jk.common.ChannelSocket acceptConnections
WARNING: Exception executing accept
java.net.SocketException: Too many open files
at java.net.PlainSocketImpl.socketAccept(Native Method)
at java.net.PlainSocketImpl.accept(Unknown Source)
at java.net.ServerSocket.implAccept(Unknown Source)
at java.net.ServerSocket.accept(Unknown Source)
at org.apache.jk.common.ChannelSocket.accept(ChannelSocket.java:295)
at org.apache.jk.common.ChannelSocket.acceptConnections(ChannelSocket.java:641)
at org.apache.jk.common.SocketAcceptor.runIt(ChannelSocket.java:852)
at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:684)
at java.lang.Thread.run(Unknown Source)
<!--[endif]-->事件的主题:linux系统出现Too many open files错误,这是因为文件描述符大小不够,或者有不正常的网络连接(Socket也是一种特殊的文件)、文件IO没有关闭并释放出文件描述符(文件句柄,File Operator)。
使用如下命令查看系统对允许打开最大文件描述符的配置:
ulimit-u查看open files设置
ulimit-a查看所有设置
ulimit-u 65535(新的open files值)修改设置
ulimit-n 65536设置用户可以同时打开的最大文件数(max open files)
如果本参数设置过小,对于并发访问量大的网站,可能会出现too many open files的错误
使用lsof-p pid [httpd进程的 pid、java的pid]来查看系统中apache进程和java运行时进程当前打开的文件资源,发现两者之和已经接近1024,大于了默认的设置。
修改配置:
修改/etc/security/limits.conf,在文件末加上
* soft nofile 65536
* hard nofile 65536
系统级文件描述符极限还可以通过将以下三行添加到/etc/rc.d/rc.local启动脚本中来设置:
# Increase system-wide file descriptor limit.
echo 65536>/proc/sys/fs/file-max
echo 65536>/proc/sys/fs/inode-max
思考:虽然调整该参数解决了当前的问题,但并不是最好的方法,出现该错误说明该服务器承载了一定的并发连接,尤其是搜索服务,其中一个实例对外提供搜索,另一个实例创建索引,两个实例之间也使用socket进行通信(httpclient for java),创建索引的时候会占用大量的文件描述符,如果描述符没有及时释放(不能完全依赖垃圾回收机制,要及时的close);全站的所有与搜索有关的接口调用都会向其发出请求,而应用2也对外服务不少的请求,较好的办法是将搜索服务从该服务器中分离出来,这样可以分别对两者进行优化(包括调整 Linux系统参数,比如:/etc/sysctl.conf中对net.ipv4的优化),出了问题也容易debug
如何在 CentOS / RHEL 上设置 SSH 免密码登录
作为系统管理员,你计划在 Linux上使用 OpenSSH,完成日常工作的自动化,比如文件传输、备份数据库转储文件到另一台服务器等。为实现该目标,你需要从主机 A能自动登录到主机 B。自动登录也就是说,要在 shell脚本中使用ssh,而无需要输入任何密码。
本文会告诉你怎样在 CentOS/RHEL上设置 SSH免密码登录。自动登录配置好以后,你可以通过它使用 SSH(Secure Shell)和安全复制(SCP)来移动文件。
SSH是开源的,是用于远程登录的最为可靠的网络协议。系统管理员用它来执行命令,以及通过 SCP协议在网络上向另一台电脑传输文件。
通过配置 SSH免密码登录,你可以享受到如下的便利:
用脚本实现日常工作的自动化。
增强 Linux服务器的安全性。这是防范虚拟专用服务器(VPS)遭受暴力破解攻击的一个推荐的方法,SSH密钥单凭暴力破解是几乎不可攻破的。
什么是 ssh-keygen
ssh-keygen是一个用来生成、创建和管理 SSH认证用的公私钥的工具。通过 ssh-keygen命令,用户可以创建支持SSH1和 SSH2两个协议的密钥。ssh-keygen为 SSH1协议创建 RSA密钥,SSH2则可以是 RSA或 DSA。
什么是 ssh-copy-id
ssh-copy-id是用来将本地公钥拷贝到远程的 authorized_keys文件的脚本命令,它还会将身份标识文件追加到远程机器的~/.ssh/authorized_keys文件中,并给远程主机的用户主目录适当的的权限。
SSH密钥
SSH密钥为登录 Linux服务器提供了更好且安全的机制。运行 ssh-keygen后,将会生成公私密钥对。你可以将公钥放置到任意服务器,从持有私钥的客户端连接到服务器的时,会用它来解锁。两者匹配时,系统无需密码就能解除锁定。
在 CentOS和 RHEL上设置免密码登录 SSH
以下步骤在 CentOS 5/6/7、RHEL 5/6/7和 Oracle Linux 6/7上测试通过。
节点1: 192.168.0.9节点2: 192.168.l.10
步骤1:
测试节点1到节点2的连接和访问:
[root@node1~]# ssh root@192.168.0.10The authenticity of host'192.168.0.10(192.168.0.10)' can't be established.RSA key fingerprint is 6d:8f:63:9b:3b:63:e1:72:b3:06:a4:e4:f4:37:21:42.Are you sure you want to continue connecting(yes/no)? yesWarning: Permanently added'192.168.0.10'(RSA) to the list of known hosts.root@192.168.0.10's password:Last login: Thu Dec 10 22:04:55 2015 from 192.168.0.1[root@node2~]#
步骤二:
使用 ssh-key-gen命令生成公钥和私钥,这里要注意的是可以对私钥进行加密保护以增强安全性。
[root@node1~]# ssh-keygenGenerating public/private rsa key pair.Enter file in which to save the key(/root/.ssh/id_rsa):Enter passphrase(empty for no passphrase):Enter same passphrase again:Your identification has been saved in/root/.ssh/id_rsa.Your public key has been saved in/root/.ssh/id_rsa.pub.The key fingerprint is:b4:51:7e:1e:52:61:cd:fb:b2:98:4b:ad:a1:8b:31:6d root@node1.ehowstuff.localThe key's randomart image is:+--[ RSA 2048]----+|.++|| o o o|| o o o.||. o+..|| S..||....|| o E oo.o||= ooo.||. o.o.|+-----------------+
步骤三:
用 ssh-copy-id命令将公钥复制或上传到远程主机,并将身份标识文件追加到节点2的~/.ssh/authorized_keys中:
[root@node1~]# ssh-copy-id-i~/.ssh/id_rsa.pub 192.168.0.10root@192.168.0.10's password:Now try logging into the machine, with"ssh'192.168.0.10'", and check in:.ssh/authorized_keysto make sure we haven't added extra keys that you weren't expecting.
步骤四:
验证免密码 SSH登录节点2:
[root@node1~]# ssh root@192.168.0.10Last login: Sun Dec 13 14:03:20 2015 from www.ehowstuff.local
我希望这篇文章能帮助到你,为你提供 SSH免密码登录 CentOS/ RHEL的基本认知和快速指南。