Java 应用程序不时因 PermGen 空间错误而死亡,但是当我查看内存使用情况时,我所知道的似乎很低。
它是一个 Tomcat 应用程序,加上运行着 SOLR 服务器(在同一个 tomcat 下)。
JVM 参数catalina.sh:
-Xms1024m
-Xmx2048m
-XX:+HeapDumpOnOutOfMemoryError
-XX:HeapDumpPath=/path/to/logs
Run Code Online (Sandbox Code Playgroud)
错误catalina.out:
java.lang.OutOfMemoryError: PermGen space
Dumping heap to /path/to/logs/java_pid22335.hprof ...
Heap dump file created [107041478 bytes in 1.823 secs]
Exception in thread "pool-5-thread-1" java.lang.OutOfMemoryError: PermGen space
Run Code Online (Sandbox Code Playgroud)
现在第一个奇怪的是内存转储只有 100Mb,而堆限制是 2048Mb。当我曾经有“正确的”内存不足错误时,转储文件的大小接近堆限制。
第二件奇怪的事情是 显示的内存使用情况jmap -heap 22335似乎很正常(运行此命令时,java 应用程序仍处于关闭状态):
Attaching to process ID 22335, please wait...
Debugger attached successfully.
Server compiler detected.
JVM version is 11.3-b02
using thread-local object allocation.
Parallel GC with …Run Code Online (Sandbox Code Playgroud) 我运行了 Solr 3.6.2 并为 Magento Enterprise 站点的搜索提供支持,并且一切正常,启动时没有错误等。
但是,当尝试访问以下管理页面时:
我收到以下错误:
Problem accessing /solr/admin/stats.jsp. Reason:
PWC6033: Unable to compile class for JSP
PWC6197: An error occurred at line: 41 in the jsp file: /admin/stats.jsp
PWC6199: Generated servlet error:
The type java.util.Map$Entry cannot be resolved. It is indirectly referenced from required .class files
org.apache.jasper.JasperException: PWC6033: Unable to compile class for JSP
PWC6197: An error occurred at line: 41 in the jsp file: /admin/stats.jsp
PWC6199: Generated servlet error:
The type …Run Code Online (Sandbox Code Playgroud) 这是我的 solr 新贵配置,它位于 /etc/init/solr.conf
# /etc/init/solr.conf
description "Starts Solr server"
respawn
start on startup solr_push
script
echo "Starting solr server..."
cd /opt/solr/solr-4.2.1/example
exec java -Xms50M -Xmx80M -Djava.util.logging.config.file=/etc/solr/logging.properties -Dsolr.solr.home=/etc/solr -jar start.jar >> /var/log/solr/solr-console.log 2>&1
end script
Run Code Online (Sandbox Code Playgroud)
当我更新此新贵配置时,例如将 java 选项从-Xmx80Mto更改 为 -Xmx70M然后执行
sudo restart solr
ps aux | grep solr
Run Code Online (Sandbox Code Playgroud)
我仍然看到-Xm80M那边,即使 solr 进程是用新的进程 id 启动的。
当我这样做sudo stop solr然后sudo start solr手动 - 一切看起来都符合预期,我可以在ps aux.
我的印象是 upstart restart 确实在幕后停止和启动,但是为什么手动停止和启动的结果与重新启动不同?
请建议,也许我做错了什么?
我正准备从供应商处订购 VPS(虚拟专用服务器),我想我必须安装一些 Servlet 容器,对吗?
我即将使用 SOLR,我的网站基于 PHP MYSQL JAVASCRIPT。
servlet 容器的安装如何工作?.exe 文件?
我对servlet容器很陌生,所以请详细解释......
另外,我怎么知道我应该使用哪个 servlet 容器?
我将使用的 VPS 操作系统是 Linux。
谢谢
PS:不知道这是否属于ServerFault
当我 ” netstat -an | grep LISTEN”
我有行:
tcp6 0 0 127.0.0.1:24030 :::* LISTEN
Run Code Online (Sandbox Code Playgroud)
我希望它是
tcp6 0 0 ::24030 :::* LISTEN
Run Code Online (Sandbox Code Playgroud)
换句话说,我想将此端口向整个局域网开放,现在只能从本地计算机访问
我该怎么做?
我在 ubuntu 10.04
我知道运行 iptables 会导致我的 Apache Solr 实例无法访问的事实。我怎么知道这个?因为我跑了:
/sbin/service iptables save && /sbin/service iptables stop
Run Code Online (Sandbox Code Playgroud)
一旦我这样做了,一切都完美无缺。
但是,我想继续使用我的防火墙,添加必要的规则似乎不起作用。我已经用尽了我认为可行的方法:
/sbin/service iptables start
/sbin/iptables -A RH-Firewall-1-INPUT -p tcp -s 127.0.0.1 --dport 8983 -j ACCEPT
/sbin/service iptables save
Run Code Online (Sandbox Code Playgroud)
还是行不通
/sbin/iptables -D RH-Firewall-1-INPUT -p tcp -s 127.0.0.1 --dport 8983 -j ACCEPT
/sbin/iptables -A RH-Firewall-1-INPUT -p tcp --dport 8983 -j ACCEPT
/sbin/service iptables save
Run Code Online (Sandbox Code Playgroud)
还是行不通
我什至尝试在 8983 端口上做一个通用的 ACCEPT:
/sbin/iptables -A INPUT -p tcp --dport 8983 -j ACCEPT
/sbin/service iptables save
Run Code Online (Sandbox Code Playgroud)
还是行不通!
想法?
**/sbin/iptables -L -n -v**
Chain …Run Code Online (Sandbox Code Playgroud) 我正在设置 Apache Solr 4.1,它将用于为 Web 应用程序索引数据。只有 Web 应用程序才能访问 Solr。用户和其他客户端不会直接与 Solr 对话。
保护此类 Solr 设置的最佳实践有哪些?
(我们使用 Jetty 来运行 Solr)
我们在配置文件中有一个IP地址(它托管一个接受特定端口请求的solr服务器)。在源代码的配置文件中添加该IP地址的开发人员已离开公司。我觉得它可能是一个 EC2 实例,但是当我登录 EC2 仪表板时,我没有看到任何具有该 IP 地址的实例。也许,我没有检查所有需要检查的地方。如何确定该 IP 地址是否是 EC2 实例。
我已经按照http://pabloseminario.com/2011/02/22/installing-solr-on-debian-6-0/ 中的说明设置了 Apache Tomcat 6 服务器并安装了 Apache Solr 3.5.0 。
现在,在浏览器中打开 solr 应用程序会产生以下错误:
HTTP Status 500 - Severe errors in solr configuration. Check your log files for more detailed information on what may be wrong. If you want solr to continue after configuration errors, change: <abortOnConfigurationError>false</abortOnConfigurationError> in solr.xml
-------------------------------------------------------------
org.apache.solr.common.SolrException: Error loading class 'solr.VelocityResponseWriter'
at org.apache.solr.core.SolrResourceLoader.findClass(SolrResourceLoader.java:389)
at org.apache.solr.core.SolrCore.createInstance(SolrCore.java:425)
at org.apache.solr.core.SolrCore.createInitInstance(SolrCore.java:447)
Run Code Online (Sandbox Code Playgroud)
我的安装目前向公众开放以进行测试:
http://62.75.247.116:8080/solr/
我在 Debian 6 机器上运行它。
我做了一些谷歌搜索,但对于 Solr 3.5,几乎没有文档或任何关于此的内容;大多数信息适用于 1.4,不适用于 3.5。
注意:我以前在 Tomcat 和 Solr 方面都没有经验。
solr 有一个小问题。当我尝试通过在搜索控制台中发出“this”来搜索包含“this”一词的文本时,solr 找不到任何内容。但是,其他词没有问题。它是保留字还是类似的东西?