标签: glassfish

为什么(或如何)root 使用的打开文件描述符的数量超过 ulimit -n?

我们的服务器最近用完了文件描述符,对此我有一些疑问。ulimit -n应该给我最大数量的打开文件描述符。这个数字是 1024。我通过运行检查了打开的文件描述符的数量,lsof -u root |wc -l得到了 2500 个 fds。这比 1024 多得多,所以我猜这意味着数字 1024 是每个进程,而不是每个用户,就像我一样。好吧,我跑了lsof -p$PidOfGlassfish|wc -l,得到了 1300。这是我没有得到的部分。如果ulimit -n不是每个用户或每个进程的最大进程数,那么它有什么用?它不适用于root用户吗?如果是这样,我怎么能得到关于文件描述符用完的错误消息?

编辑:我能理解的唯一方法ulimit -n是它是否应用打开文件的数量(如 bash 手册中所述)而不是文件句柄的数量(不同的进程可以打开同一个文件)。如果是这种情况,那么仅列出打开文件的数量(grepping '/',从而排除内存映射文件)是不够的

lsof -u root |grep /|sort  -k9  |wc -l #prints '1738'
Run Code Online (Sandbox Code Playgroud)

要实际查看打开文件的数量,我需要对名称列进行过滤,仅打印唯一条目。因此,以下可能更正确:

lsof -u root |grep /|sort  -k9 -u |wc -l #prints '604'
Run Code Online (Sandbox Code Playgroud)

上面的命令需要 lsof 以以下格式输出:

java      32008 root  mem       REG                8,2 11942368      72721 /usr/lib64/locale/locale-archive
vmtoolsd   4764 root  mem       REG                8,2    18624     106432 /usr/lib64/open-vm-tools/plugins/vmsvc/libguestInfo.so
Run Code Online (Sandbox Code Playgroud)

这至少给了我小于 …

linux glassfish root max-file-descriptors

16
推荐指数
4
解决办法
5万
查看次数

阿帕奇的替代品

我们当前的堆栈是 Apache + Tomcat + MySQL,使用ProxyPassAJP 将请求从 Apache 发送到 Tomcat。我们还在相同的站点上为 Wordpress 运行 PHP,因此需要工作.htaccess文件。为了解决一个烦人的问题(请参阅此堆栈溢出页面),我们正在考虑替代堆栈。请注意,我们通常非常喜欢 apache,但这个问题是个障碍:如果我们不能修复它,我们就不能使用 Apache。

替代方案包括:

  • 单独的Tomcat
  • Glassfish(Java 应用服务器,从 Tomcat 分叉)
  • 码头(Java 服务器)
  • 树脂
  • LightTPD(轻量级 HTTP 服务器)
  • Nginx(轻量级 HTTP 服务器)

在我看来,解决方案分为两个阵营:纯 Java 阵营,如 Glassfish;或者分裂阵营,比如我们现在的Apache + Tomcat。我们喜欢纯 Java 解决方案的想法,因为更少的活动部件意味着更少的错误;但是它们中的任何一个都支持 PHP、.htaccess文件等吗?

从理论上讲,我们可以用另一种方式进行拆分——有一个简单的前端,只在需要这些功能的那些位上代理 Apache——但实际上这将是 80% 的请求。

人们建议什么选择?

tomcat glassfish jetty nginx apache-2.2

15
推荐指数
2
解决办法
3631
查看次数

真的有必要运行 Apache 作为 Glassfish/JBoss/Tomcat 的前端吗?

我主要是一名 Java 开发人员,我向您提出了一个跨越开发人员和系统管理员之间鸿沟的问题。

多年前,当将 Tomcat 作为应用程序服务器运行是一件新鲜事时,习惯上将 Apache 置于前端。据我了解,这样做是因为:

  1. Java 被认为是“慢”的,让 Apache 直接提供静态内容是有帮助的。
  2. 除非以 root 身份运行,否则 Tomcat 无法侦听端口 80/443,这很危险。

Java 不再被认为是缓慢的,我怀疑将 Apache 添加到组合中是否真的有助于加快速度。

至于端口问题,如今可能有更简单的方法将应用服务器连接到端口 80/443。

所以我的问题是——这些天用 Apache 前端 Java Webapps 真的有什么好处吗?如果是这样,Apache 仍然是要走的路吗?我应该看看 Nginx 吗?如果这很重要,我使用的是 Glassfish 而不是 Tomcat。

tomcat glassfish apache-2.2

15
推荐指数
2
解决办法
9087
查看次数

JBOSS 应用服务器与 Glassfish

我是 Glassfish 的新手。

JBoss 和 Glassfish 之间有什么区别?为什么你会选择一个而不是另一个。

我正在尝试阅读 Glassfish,但在开始安装并尝试在其上部署一些应用程序之前,很难确定我可能需要的东西。

更新
如果提供有关 JBoss 和 Glassfish 比较的任何其他信息
(例如它们支持的技术、性能等),那就太好了。

application-server glassfish jboss

10
推荐指数
2
解决办法
2万
查看次数

直接在端口 80/443 上运行 Web 应用程序服务器是不好的做法吗

我正在使用ec2 实例amazon aws上托管一个网络应用程序

在那种情况下,我将只运行一个应用程序。使用glassfish v3.0.1

我不想使用以下方式运行应用程序:

www.mydomain.com:8080 or www.mydomain.com:8181 
Run Code Online (Sandbox Code Playgroud)

我只想使用:

www.mydomain.com or https://www.mydomain.com
Run Code Online (Sandbox Code Playgroud)

所以我将glassfish 上的http-listener-1http-listener-2更改为在端口(分别)上运行80443

这被认为是不好的做法吗?我是一名软件工程师,我通常不处理服务器管理方面的事情,因此在这些方面没有太多经验。

感谢您的指导。

performance glassfish port domain-name

9
推荐指数
1
解决办法
3238
查看次数

Apache 反向代理 Java 应用程序服务器 CLOSE_WAIT 连接

我已经将 Apache 设置为 Java 应用程序服务器 (GlassFish) 的反向代理,我注意到即使在空闲的开发系统上也有大约 100 个连接处于 CLOSE_WAIT 状态:

sudo netstat -n -e -p -a -t | grep httpd | grep CLOSE_WAIT | wc -l
Run Code Online (Sandbox Code Playgroud)

我正在使用以下 HTTP 代理设置:

ProxyPass /myapp http://localhost:8080/myapp ttl=20 max=1 smax=0
ProxyPassReverse /myapp http://localhost:8080/myapp
Run Code Online (Sandbox Code Playgroud)

为什么所有这些联系都存在?我已经设置了“ttl=20 max=1 smax=0”,所以我认为所有连接都会在空闲系统上被清理。应用程序服务器是否没有尽其所能清理连接?

glassfish mod-proxy apache-2.2

9
推荐指数
1
解决办法
4782
查看次数

Apache ProxyPass 缺少图像

我有一个 apache 服务器,它位于我的 glassfish 服务器前面。mydomain.com 直接转到我在 apache 上的静态文件,而不是如果您点击子域 forum.mydomain.com,它会转到 glassfish webapp 论坛/在 127.0.0.1:8080/forum/。这个代理似乎可以工作,它将我带到网络应用程序,但所有图像都丢失了!这是我如何进行虚拟主机设置。

NameVirtualHost *:80

<VirtualHost *:80>
    ServerName www.mydomain.com
    ServerAlias subdomain.mydomain.com mydomain.com
    DocumentRoot "/usr/local/apache/htdocs"

</VirtualHost>


<VirtualHost *:80>
    ServerName forum.mydomain.com
    # any logging config, etc, that you need
    ProxyPass / http://127.0.0.1:8080/forum/
    ProxyPassReverse / http://127.0.0.1:8080/forum/
</VirtualHost>
Run Code Online (Sandbox Code Playgroud)

在访问日志中,这就是我所看到的。

[15/Jan/2012:03:28:02 +0000] "GET /forums/list.page HTTP/1.1" 200 12861
[15/Jan/2012:03:28:02 +0000] "GET /forum/templates/default/images/logo.jpg HTTP/1.1" 404 1075
[15/Jan/2012:03:28:02 +0000] "GET /forum/templates/default/styles/style.css?1326582403934 HTTP/1.1" 404 1075
[15/Jan/2012:03:28:02 +0000] "GET /forum/templates/default/images/icon_mini_recentTopics.gif HTTP/1.1" 404 1075
[15/Jan/2012:03:28:02 +0000] "GET /forum/templates/default/images/icon_mini_search.gif HTTP/1.1" 404 1075 …
Run Code Online (Sandbox Code Playgroud)

glassfish mod-proxy apache-2.2

7
推荐指数
1
解决办法
3万
查看次数

来自 glassfish 的离线卸载战争

我这里有 Glassfish 2.1.1,我需要取消部署 war 应用程序。问题是应用程序已损坏并阻止 Glassfish 服务器启动,因此我需要在服务器关闭时取消部署它。

asadmin undeploy 需要连接到运行服务器...

所以问题是 - 如何从离线 Glassfish 服务器取消部署。

glassfish

6
推荐指数
1
解决办法
5362
查看次数

Glassfish 连接池在重启服务器后不起作用

我在 Glassfish 3.1 中有一个连接池来连接到 SqlServer 2008 Express,这个池工作正常,但是当 Glassfish 重新启动时,连接池无法 ping 并停止工作。为了再次工作,我将 url 主机名从“localhost”更改为“127.0.0.1”或相反......显然这个问题只发生在 Glassfish 在 Windows Server 2008 中运行时,当我在 Linux 服务器中运行 Glassfish 时没有问题这发生...

已编辑

[#|2012-06-20T14:21:34.992-0300|WARNING|oracle-glassfish3.1.2|javax.enterprise.resource.resourceadapter.com.sun.enterprise.connectors.service|_ThreadID=24;_ThreadName=Thread-2;|RAR8054: Exception while creating an unpooled [test] connection for pool [ erp_hm_pool ], null|#]
[#|2012-06-20T14:21:35.006-0300|SEVERE|oracle-glassfish3.1.2|org.glassfish.admingui|_ThreadID=25;_ThreadName=Thread-2;|RestResponse.getResponse() dá FAILURE. endpoint = 'http://localhost:48/management/domain/resources/ping-connection-pool.json'; attrs = '{id=erp_hm_pool}'|#]
[#|2012-06-20T14:22:42.187-0300|WARNING|oracle-glassfish3.1.2|javax.enterprise.resource.resourceadapter.com.sun.enterprise.resource.pool.resizer|_ThreadID=26;_ThreadName=Thread-2;|RAR5058: Error while Resizing pool erp_hm_pool. Exception : null|#]
[#|2012-06-20T14:22:42.193-0300|WARNING|oracle-glassfish3.1.2|javax.enterprise.resource.resourceadapter.com.sun.enterprise.resource.pool.resizer|_ThreadID=26;_ThreadName=Thread-2;|RAR5058: Error while Resizing pool erp_hm_pool. Exception : null|#]
[#|2012-06-20T14:22:42.194-0300|WARNING|oracle-glassfish3.1.2|javax.enterprise.resource.resourceadapter.com.sun.enterprise.resource.pool.resizer|_ThreadID=26;_ThreadName=Thread-2;|RAR5058: Error while Resizing pool erp_hm_pool. Exception : null|#]
[#|2012-06-20T14:22:42.195-0300|WARNING|oracle-glassfish3.1.2|javax.enterprise.resource.resourceadapter.com.sun.enterprise.resource.pool.resizer|_ThreadID=26;_ThreadName=Thread-2;|RAR5058: Error while Resizing pool erp_hm_pool. …
Run Code Online (Sandbox Code Playgroud)

windows-server-2008 glassfish sql-server connection-pool

5
推荐指数
0
解决办法
1407
查看次数

glassfish 集群在启动时失败

我在尝试设置集群时遇到问题。

我将描述详细的配置(因为我找不到在两台不同的电脑上制作的集群示例,所有这些都是在一个本地主机上制作的):

3 个 ubuntu 虚拟机:1 个域管理员和 2 个实例。

我在每个实例上安装(解压缩)1 个 glassfish 服务器并启动它们。然后我在域管理员(也是一个 glassfish)上为每个节点创建了一个 ssh 节点

所以我有

节点1 192.168.193.134 SSH 节点
节点2 192.168.193.133 SSH 节点

均成功连接。

最后我通过命令行创建了集群,如下所示

:~$ asadmin create-cluster clusterm
:~$ asadmin create-instance --node node1 --cluster clusterm inst1
:~$ asadmin create-instance --node node2 --cluster clusterm inst2

但是当我尝试启动集群 ( :~$ asadmin start-cluster clusterm) 时,它失败并抛出此错误:

    remote failure: inst1: Could not start instance inst1 on node node1 (192.168.193.134).

    Command failed on node node1 (192.168.193.134): Previous synchronization failed at May 20, 2013 …
Run Code Online (Sandbox Code Playgroud)

cluster glassfish

5
推荐指数
1
解决办法
2806
查看次数