catalina.sh中加入这么一行:-Djava.security.egd=file:/dev/./urandom加在哪里
时间: 2024-10-12 19:06:40 浏览: 6
在`catalina.sh`文件中添加 `-Djava.security.egd=file:/dev/./urandom` 这行命令是为了设置Java安全随机数生成器(Random Number Generator,RNG)的源。通常,这行配置会被放在`JAVA_OPTS`变量中,因为Java启动选项通常在这个区域。`catalina.sh`是Apache Tomcat服务器的启动脚本,用于初始化Java环境和运行Web应用程序。
你需要在`catalina.sh`文件中找到类似下面这样的部分:
```bash
# Set default Java VM options here (inherited by child processes)
export JAVA_OPTS="-Xms512m -Xmx1024m -XX:MaxPermSize=256m ${JAVA_OPTS} -Djava.security.egd=file:/dev/./urandom"
```
将上述配置添加到`JAVA_OPTS`变量之后,确保它不会被其他已存在的选项覆盖,并且重启Tomcat服务使其生效。如果`JAVA_OPTS`已经存在,那么可以将其追加在现有的选项列表后面。
相关问题
tomcat 报too many open file
"Too many open files" 是因为 Tomcat 打开的文件句柄数量超过了系统限制。这个错误通常发生在 Tomcat 在高并发情况下运行时,尤其是在处理大量文件上传或下载的时候。
解决这个问题的一种方法是增加系统对文件句柄数量的限制。您可以通过修改 `/etc/security/limits.conf` 文件来提高系统对文件句柄数量的限制。例如,您可以添加以下行:
```
* hard nofile 65535
* soft nofile 65535
```
这将把系统中所有用户的硬限制和软限制都设置为 65535。注意,这些更改需要重新登录才能生效。
另外,您也可以在 Tomcat 的 `setenv.sh` 文件中添加以下行,以增加 Tomcat 对文件句柄数量的限制:
```
CATALINA_OPTS="$CATALINA_OPTS -Dfile.encoding=UTF8 -Djava.net.preferIPv4Stack=true -Djava.awt.headless=true -Xms512M -Xmx1024M -XX:PermSize=256M -XX:MaxPermSize=512M -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=/tmp/tomcat-heap-dump.hprof -XX:ErrorFile=/tmp/tomcat-error.log -XX:+PrintGCDetails -XX:+PrintGCDateStamps -XX:+PrintHeapAtGC -XX:+UseGCLogFileRotation -XX:NumberOfGCLogFiles=5 -XX:GCLogFileSize=10M -XX:-OmitStackTraceInFastThrow -XX:+HeapDumpBeforeFullGC -XX:HeapDumpPath=/tmp/tomcat-heap-dump.hprof -XX:+HeapDumpOnOutOfMemoryError -XX:+UseGCLogFileRotation -XX:+PrintGCDetails -XX:+PrintGCDateStamps -XX:NumberOfGCLogFiles=10 -XX:GCLogFileSize=10M -Djava.net.preferIPv4Stack=true -Djava.net.preferIPv4Addresses=true -Djavax.net.ssl.trustStore=/etc/cacerts/truststore.jks -Djavax.net.ssl.trustStorePassword=changeit -Djavax.net.ssl.keyStore=/etc/cacerts/keystore.jks -Djavax.net.ssl.keyStorePassword=changeit -Djavax.net.ssl.keyPassword=changeit -Dhttp.keepAlive=false -Djava.security.egd=file:/dev/./urandom -Dfile.encoding=UTF-8 -Djava.library.path=/opt/tomcat/lib:/usr/java/packages/lib:/usr/lib64:/lib64:/lib:/usr/lib"
```
其中的 `-XX:MaxPermSize` 和 `-XX:PermSize` 参数控制了 Tomcat 对 JVM 的永久内存的限制。您可以根据您的需要进行调整。
当然,如果您使用的是系统默认的 Tomcat 包,也可以直接通过修改 `/etc/sysctl.conf` 文件来增加系统对文件句柄数量的限制。例如,您可以添加以下行:
```
fs.file-max = 65535
```
这将把系统中可用的文件句柄数量设置为 65535。修改完成后,您需要重新加载 `/etc/sysctl.conf` 文件:
```
sysctl -p
```
希望这些信息能对您有所帮助!
tomcat8最小化权限执行怎么配置
要配置 Tomcat 8 最小化权限执行,您需要进行以下步骤:
1. 创建一个新的非特权用户,例如“tomcat”。您可以使用以下命令来创建一个新用户:
```
sudo useradd -r -s /bin/false tomcat
```
2. 将 Tomcat 8 安装目录和相关文件的所有权更改为“tomcat”用户。您可以使用以下命令将所有权更改为“tomcat”用户:
```
sudo chown -R tomcat:tomcat /opt/tomcat
```
其中,“/opt/tomcat”是 Tomcat 8 的安装目录。
3. 将 Tomcat 8 进程的 umask 设置为 027。您可以在 Tomcat 8 的启动脚本中添加以下行来设置 umask:
```
umask 027
```
4. 配置 Tomcat 8 的“setuid”功能,将 Tomcat 8 进程的用户 ID 更改为“tomcat”用户。在 Tomcat 8 的启动脚本中添加以下行来设置“setuid”功能:
```
CATALINA_OPTS="-Dorg.apache.tomcat.util.buf.UDecoder.ALLOW_ENCODED_SLASH=true -Dcatalina.home=$CATALINA_HOME -Djava.security.egd=file:/dev/./urandom -Djava.awt.headless=true -XX:+UseG1GC -Djava.library.path=/usr/lib -Xms512m -Xmx1024m -XX:MaxPermSize=256m -XX:+UseConcMarkSweepGC -Djava.security.manager -Djava.security.policy==/opt/tomcat/conf/catalina.policy -Djava.net.preferIPv4Stack=true -Djava.endorsed.dirs=/opt/tomcat/endorsed -Dcatalina.base=$CATALINA_BASE"
CATALINA_OPTS="$CATALINA_OPTS -Djava.awt.headless=true -Djava.security.manager -Djava.security.policy==/opt/tomcat/conf/catalina.policy -Djava.net.preferIPv4Stack=true -Djava.endorsed.dirs=/opt/tomcat/endorsed -Dcatalina.base=$CATALINA_BASE -Dcatalina.home=$CATALINA_HOME -Djava.io.tmpdir=$CATALINA_TMPDIR"
export CATALINA_OPTS
export JAVA_OPTS="-Djava.awt.headless=true -Djava.security.manager -Djava.security.policy==/opt/tomcat/conf/catalina.policy -Djava.net.preferIPv4Stack=true -Djava.endorsed.dirs=/opt/tomcat/endorsed -Dcatalina.base=$CATALINA_BASE -Dcatalina.home=$CATALINA_HOME -Djava.io.tmpdir=$CATALINA_TMPDIR"
export JAVA_HOME=/usr/lib/jvm/java-8-openjdk-amd64
su tomcat -c "/opt/tomcat/bin/catalina.sh run"
```
其中,“su tomcat”命令将 Tomcat 8 进程的用户 ID 更改为“tomcat”用户。
完成这些步骤后,您可以启动 Tomcat 8 进程,并确保它仅在“tomcat”用户的上下文中运行。