使用mod_jk和mod_proxy使用apache前端tomcat实例的优点和缺点是什么?
我已经在生产中使用mod_jk多年了,但我听说它是面向tomcat的"旧方式".我应该考虑改变吗?会有什么好处吗?
带有mod_jk 1.3.7的Apache Server 2.4不适用于ssl(https)
错误1:
名为Apache的服务报告了以下错误:
SSLSessionCache:不支持'shmcb'会话缓存(已知名称:).也许你需要加载适当的socache模块(mod_socache_shmcb?).
错误2:
错误应用程序名称:httpd.exe,版本:2.4.4.0,时间戳:0x512fec36错误模块名称:mod_jk.so,版本:1.2.37.0,时间戳:0x4fc48072异常代码:0xc0000005错误偏移量:0x000000000000752d错误进程id:0x3580错误应用程序启动时间:0x01cee6d2be493d71错误应用程序路径:C:\ Program Files\Apache Software Foundation\Apache2.4\bin\httpd.exe错误模块路径:C:\ Program Files\Apache Software Foundation\Apache2.4\modules\mod_jk.所以报告ID:f8d090fa-52c6-11e3-bce9-e4d53d737212
我们的配置httpd_ssl.conf如下:
Listen 443
SSLCipherSuite HIGH:MEDIUM:!aNULL:!MD5
SSLPassPhraseDialog builtin
SSLSessionCache "shmcb:C:/Program Files/Apache Software Foundation/Apache2.4/logs/ssl_scache(512000)"
SSLSessionCacheTimeout 300
<VirtualHost _default_:443>
DocumentRoot "C:/Program Files/Apache Software Foundation/Apache2.4/htdocs"
ServerName 127.0.0.1:443
ServerAdmin admin@mshome.net
ErrorLog "C:/Program Files/Apache Software Foundation/Apache2.4/logs/error.log"
TransferLog "C:/Program Files/Apache Software Foundation/Apache2.4/logs/access.log"
SSLEngine on
SSLCertificateFile "C:/Program Files/Apache Software Foundation/Apache2.4/conf/serverssl.crt"
SSLCertificateKeyFile "C:/Program Files/Apache Software Foundation/Apache2.4/conf/server.key"
SSLCACertificateFile "C:/Program Files/Apache Software Foundation/Apache2.4/conf/bundle.crt"
<FilesMatch "\.(cgi|shtml|phtml|php)$">
SSLOptions +StdEnvVars
</FilesMatch>
<Directory "C:/Program Files/Apache Software …Run Code Online (Sandbox Code Playgroud) 我正在寻找一种在Mac OS X 10.7 Lion或更高版本上安装mod_jk的正确方法.目标是在Apache HTTPD后面测试Tomcat.
到目前为止,我发现安装mod_jk的唯一方法是下载源代码然后在控制台中配置它并进行make和make install.
这不是真的,因为我需要自己管理mod_jk安装和配置.例如,我可能忘记在需要时删除mod_jk.无论如何,我认为应该有更友好的方式安装mod_jk像某种DMG包.
我还发现mod_jk在OS X Server中可用.实际上它在我的开发机器上,但仅适用于服务器.
<IfDefine MACOSXSERVER>
...
#LoadModule jk_module libexec/apache2/mod_jk.so
...
</IfDefine MACOSXSERVER>
Run Code Online (Sandbox Code Playgroud)
对于没有安装OS X Server或任何其他方式的开发人员,可能会在某处提供mod_jk软件包.
更新
以下是我的配置的样子:
<VirtualHost *:80>
ServerAdmin me@me.com
DocumentRoot "/Users/me/Sites/projekt"
ServerName projekt.local
<Directory "/Users/me/Sites/projekt">
Options Indexes FollowSymLinks
AllowOverride All
Order allow,deny
Allow from all
</Directory>
<Proxy *>
AddDefaultCharset Off
Order deny,allow
Allow from all
</Proxy>
ProxyPass /coolapp ajp://localhost:8009/coolapp
ProxyPassReverse /coolapp ajp://localhost:8009/coolapp
ErrorLog "/private/var/log/apache2/projekt.local-error_log"
CustomLog "/private/var/log/apache2/projekt.local-access_log" common
</VirtualHost>
Run Code Online (Sandbox Code Playgroud)
以上和配置Tomcat与AJP连接器只是你需要的.惊人!
参考: …
我在项目中使用Apache和Tomcat和mod-jk.我的Web应用程序位于Tomcat实例中.我正在使用Apache jmeter来测试tomcat上的http加载.但我得到错误记分板已满,而不是MaxRequestWorkers即使有1000个线程.
[mpm_event:error] [pid 24313:tid 3075319488] AH00485: scoreboard is full, not at MaxRequestWorkers
[mpm_event:error] [pid 24313:tid 3075319488] AH00484: server reached MaxRequestWorkers setting, consider raising the MaxRequestWorkers setting
Run Code Online (Sandbox Code Playgroud)
我已经为大约5000个线程配置了http-mpm.
httd-mpm.conf文件是:
<IfModule mpm_event_module>
ServerLimit 200
StartServers 3
MinSpareThreads 75
MaxSpareThreads 250
MaxClients 5000
ThreadsPerChild 25
MaxRequestWorkers 5000
MaxConnectionsPerChild 5000
</IfModule>
Run Code Online (Sandbox Code Playgroud)
有人可以指导我这个配置中可能出现的问题吗?
我昨天刚升级到Mavericks,不得不为我的开发环境重新安装mod_jk.从源代码编译它有点痛苦.我在OS X 上发现了一个关于mod_jk 的先前问题的这个页面,但是还有一些额外的箍我不得不跳过.出于某种原因,apxs认为gcc生活在:
/Applications/Xcode.app/Contents/Developer/Toolchains/OSX10.9.xctoolchain/usr/bin/cc
Run Code Online (Sandbox Code Playgroud)
但是那个确切的文件夹不存在; 我不得不对现有XcodeDefault.xctoolchain目录进行符号链接:
sudo ln -s XcodeDefault.xctoolchain/ OSX10.9.xctoolchain
Run Code Online (Sandbox Code Playgroud)
然后我尝试运行configure:
./configure CFLAGS='-arch x86_64' APXSLDFLAGS='-arch x86_64' --with-apxs=/usr/sbin/apxs
Run Code Online (Sandbox Code Playgroud)
但是,配置失败,因为它无法找到<stdio.h>,所以我将OS X 10.9工具链符号链接为:
sudo ln -s /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.9.sdk/usr/include/ /usr/include
Run Code Online (Sandbox Code Playgroud)
然后,我可以通过sudo make install -f Makefile.apxs在apache-2.0子目录中运行来编译和安装模块.但是,当我启动Apache时sudo apachectl start,它立即崩溃了一个段错误:
Thread 0 Crashed:: Dispatch queue: com.apple.main-thread
0 libsystem_kernel.dylib 0x00007fff875fb866 __pthread_kill + 10
1 libsystem_pthread.dylib 0x00007fff8b8a435c pthread_kill + 92
2 libsystem_c.dylib 0x00007fff92480bba abort + 125
3 libsystem_c.dylib 0x00007fff92480d31 abort_report_np + 181
4 libsystem_c.dylib 0x00007fff924a48c5 …Run Code Online (Sandbox Code Playgroud) 我有一个配置问题,让我难过.我有两个在Tomcat中运行的Web应用程序,它们通过Apache httpd连接和访问.我之前使用过Tomcat 7和Apache 2.2,我安装了Tomcat 9和Apache 2.4并加载了我的webapps.我阅读了配置更改,我认为我根据需要进行了调整,但出于某种原因,我的两个应用程序中只有一个可以访问.这应该排除很多事情,因为那个工作得很好.
我将在下面添加我的缩写Apache httpd配置.我确实调整了顺序拒绝,允许东西要求在conf文件中授予所有权限.我想知道它是否与JkMount指令有关,但这是它在Apache 2.2中的工作方式.它可能与以ROOT /运行的其中一个webapp相关吗?我确实在mod_jk.log中看到了一些错误,例如:
[info] jk_open_socket::jk_connect.c (817): connect to 127.0.0.1:8010 failed (errno=61)
[info] ajp_connect_to_endpoint::jk_ajp_common.c (1068): (worker1) Failed opening socket to (127.0.0.1:8010) (errno=61)
[error] ajp_send_request::jk_ajp_common.c (1728): (worker1) connecting to backend failed. Tomcat is probably not started or is listening on the wrong port (errno=61)
[info] ajp_service::jk_ajp_common.c (2778): (worker1) sending request to tomcat failed (recoverable), because of error during request sending (attempt=1)
..
[info] ajp_service::jk_ajp_common.c (2778): (worker1) sending request to tomcat failed (recoverable), because of error …Run Code Online (Sandbox Code Playgroud) 对于挂起的负载均衡Tomcat服务器,我有一个令人讨厌的问题.任何帮助将不胜感激.
我在HotSpot Server 14.3-b01(Java 1.6.0_17-b04)上的三台服务器上运行Tomcat 6.0.26,这三台服务器位于另一台充当负载均衡器的服务器后面.负载均衡器运行Apache(2.2.8-1)+ MOD_JK(1.2.25).所有服务器都运行Ubuntu 8.04.
Tomcat配置了2个连接器:AJP连接器和HTTP连接器.AJP将与负载均衡器一起使用,而开发团队使用HTTP直接连接到所选服务器(如果我们有理由这样做).
我在Tomcat服务器上安装了Lambda Probe 1.7b,以帮助我快速诊断和解决问题.
问题在于:大约1天后,应用程序服务器启动,JK状态管理器开始报告ERRTomcat2的状态.它只会停留在这种状态,我到目前为止找到的唯一修复是ssh框并重启Tomcat.
我还必须提到,当处于此状态的Tomcat服务器时,JK状态管理器需要花费更长的时间来刷新.
最后,JK状态管理器上卡住的Tomcat的"繁忙"计数总是很高,并且本身不会下降 - 我必须重新启动Tomcat服务器,等待,然后重置JK上的worker.
由于每个Tomcat(AJP和HTTP)上有2个连接器,我仍然可以通过HTTP连接到应用程序.这个应用程序工作正常,非常非常快.这是完全正常的,因为我是唯一使用此服务器的人(因为JK停止将请求委托给此Tomcat).
为了更好地理解这个问题,我从一个没有响应的Tomcat中获取了一个线程转储,并从最近重新启动的另一个(例如,1小时前)开始.
正常响应JK的实例显示大多数处于"Runnable"状态的TP-ProcessorXXX线程,具有以下堆栈跟踪:
java.net.SocketInputStream.socketRead0 ( native code )
java.net.SocketInputStream.read ( SocketInputStream.java:129 )
java.io.BufferedInputStream.fill ( BufferedInputStream.java:218 )
java.io.BufferedInputStream.read1 ( BufferedInputStream.java:258 )
java.io.BufferedInputStream.read ( BufferedInputStream.java:317 )
org.apache.jk.common.ChannelSocket.read ( ChannelSocket.java:621 )
org.apache.jk.common.ChannelSocket.receive ( ChannelSocket.java:559 )
org.apache.jk.common.ChannelSocket.processConnection ( ChannelSocket.java:686 )
org.apache.jk.common.ChannelSocket$SocketConnection.runIt ( ChannelSocket.java:891 )
org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run ( ThreadPool.java:690 )
java.lang.Thread.run ( Thread.java:619 )
Run Code Online (Sandbox Code Playgroud)
卡住的实例显示大多数(全部?)TP-ProcessorXXX线程处于"等待"状态.它们具有以下堆栈跟踪:
java.lang.Object.wait ( native code )
java.lang.Object.wait ( …Run Code Online (Sandbox Code Playgroud) 什么配置需要调整,它在哪里生活,以增加允许的最大邮政大小?
我刚刚和Mavericks一起更新了我的OSX,现在我在使用apache和Jetty时出错了.它曾经将我的example.com域直接映射到localhost.
现在看来,运行我的应用程序服务器我必须明确指定端口来命中我的服务器.(例如example.com:8080)
当我跑到命令之下时.
sudo apachectl -e debug
Run Code Online (Sandbox Code Playgroud)
我会得到的
[debug] mod_so.c(246): loaded module jk_module
(48)Address already in use: make_sock: could not bind to address [::]:80
(48)Address already in use: make_sock: could not bind to address 0.0.0.0:80
no listening sockets available, shutting down
Run Code Online (Sandbox Code Playgroud)
我运行了很多diff命令来杀死所有httpd进程以及正在侦听此端口的端口.
ex. sudo lsof -i :80
httpd 946 root 5u IPv6 0xe0c8ad50898bcf0f 0t0 TCP *:http (LISTEN)
httpd 947 _www 5u IPv6 0xe0c8ad50898bcf0f 0t0 TCP *:http (LISTEN)
httpd 949 _www 5u IPv6 0xe0c8ad50898bcf0f 0t0 TCP *:http (LISTEN)
httpd 954 _www …Run Code Online (Sandbox Code Playgroud) 我是一个新技术人员.我的问题是,我有在tomcat7上运行的Web应用程序.现在我想在Windows服务器上安装和配置mod_jk以连接apache和tomcat.
请告诉我,怎么做?
谢谢