【问题标题】:Apache Ignite crash on startupApache Ignite 在启动时崩溃
【发布时间】:2020-12-08 02:57:56
【问题描述】:

我在 IIS 下的 ApsNetCore 2.0 Web 应用程序中使用 Apache Ignite 实体框架 Nuget 作为二级缓存(作为反向代理)。 在我的开发机器(VS2017 Windows 8.1)上一切正常。当我部署到 WindowsServer 2012 时,Ignite 在启动时崩溃:

启动应用程序时出错。 IgniteException:无法加载 jvm.dll(请指定 IgniteConfiguration.JvmDllPath 或 JAVA_HOME。) Apache.Ignite.Core.Impl.Unmanaged.Jni.JvmDll.Load(string configJvmDllPath, ILogger log)

TargetInvocationException:调用的目标已抛出异常。 System.RuntimeTypeHandle.CreateInstance(RuntimeType type, bool publicOnly, bool noCheck, ref bool canBeCached, ref RuntimeMethodHandleInternal ctor, ref bool bNeedSecurityCheck)

IgniteException:无法加载 jvm.dll(请指定 IgniteConfiguration.JvmDllPath 或 JAVA_HOME。) Apache.Ignite.Core.Impl.Unmanaged.Jni.JvmDll.Load(字符串 configJvmDllPath,ILogger 日志) Apache.Ignite.Core.Ignition.Start(IgniteConfiguration cfg) Apache.Ignite.EntityFramework.IgniteDbConfiguration.GetOrStartIgnite(IgniteConfiguration cfg) Apache.Ignite.EntityFramework.IgniteDbConfiguration..ctor()

我检查并重新咀嚼,安装 JDK,更正系统变量....一切。错误不会消失。有趣的是应用程序可以作为控制台运行。当它在 IIS(反向代理)下运行时,它会在启动时崩溃并出现上述错误。

有什么建议吗?

谢谢

【问题讨论】:

  • 您好,您是否有多个 JAVA 运行时?另外你用的是什么版本?如果不是最新的,那么你可能遇到了一个已知的错误,稍后会在这里发布
  • 另一个猜测 - 检查您没有 x64-x86 不匹配,并且 JRE 和 Ignite 的目标是相同的,很可能是 x64 平台。

标签: entity-framework ignite


【解决方案1】:

我设法启动了网站。如何 ?仅使用 JDK 11 和 app.config 文件上 jvm.dll 的显式路径:

如果在配置中不明确,则崩溃。 系统变量中的 JAVA_HOME 设置正确。路径变量也是

%JAVA_HOME%;%JAVA_HOME%\bin;%JAVA_HOME%\bin\server;%SystemRoot%\system32;%SystemRoot%;%SystemRoot%\System32\Wbem;%SYSTEMROOT%\System32\WindowsPowerShell\v1.0 ;C:\Program Files\Microsoft\Web Platform Installer;C:\Program Files\dotnet;C:\Program Files (x86)\dotnet;C:\ProgramData\chocolatey\bin;C:\Program Files\Memurai;C :\Program Files\Java\jdk-15.0.1\bin\

也许是与 C:\Program Files\Java\jdk-15.0.1\bin\ 冲突?它使用 jvm 15。但它适用于 jvm 11

【讨论】:

    【解决方案2】:

    看起来 IIS 工作进程正在 32 位模式下运行,因此 Ignite 会查找不存在的 32 位 JDK。

    并且控制台应用程序在 64 位模式下运行,使用 64 位 JDK,因此可以正常工作。

    请检查IIS Manager -> Application Pools -> select the app pool you want and -> Advanced Settings中的应用程序池设置。

    此外,您可以启用对文件的详细日志记录(因为在 IIS 中看不到控制台日志) - Ignite 记录所有解析 JDK 路径的尝试。例如,使用Apache.Ignite.NLog 包:

    var nlogConfig = new LoggingConfiguration();
    var fileTarget = new FileTarget
    {
        FileName = "/home/pavel/w/ignite_nlog.log"
    };
    nlogConfig.AddTarget("logfile", fileTarget);
    nlogConfig.LoggingRules.Add(new LoggingRule("*", LogLevel.Trace, fileTarget));
    LogManager.Configuration = nlogConfig;
    
    var igniteConfig = new IgniteConfiguration
    {
        Logger = new IgniteNLogLogger()
    };
    
    Ignition.Start(igniteConfig);
    

    【讨论】:

    • 感谢您的帮助!对此,我真的非常感激 !我检查了应用程序池;启用 32 位 = 假。这是关于 32/64 位的唯一选项。我会尝试安装 ignite 日志包,我会返回结果
    • 我也尝试指定 JvmDllPath="C:\\Program Files\\Java\\jdk-15.0.1\\bin\\server\\jvm.dll" 。现在它崩溃了:IgniteException: Failed to load jvm.dll ([option=IgniteConfiguration.JvmDllPath, path=C:\Program Files\Java\jdk-15.0.1\bin\server\jvm.dll, error=DLL could not被加载(126:ERROR_MOD_NOT_FOUND)。这可能是由于缺少依赖项造成的。])
    【解决方案3】:

    我已经检查了 Pavel Tupitsyn 的建议点:

    1. 应用程序池应用程序是 64 位 (emable 32bits=false)
    2. 我已经安装了 apache.Ignite.NLog 我在我的机器上对其进行了测试,它很好地记录了所有 java 解析。 我已经部署到 Windows Server 2012 并且在 IIS 下我得到了“进程失败”。 日志文件如下所示:

    2020-12-07 19:39:38.3304|调试||启动 Ignite.NET 2.9.0.50002 2020-12-07 19:39:38.3834|WARN||GC 服务器模式未启用,这可能会导致多核机器上的性能低于最佳性能(启用参见http://msdn.microsoft.com/en-us/library/ms229357(v=vs.110).aspx)。 2020-12-07 19:39:46.2534|调试||启动 Ignite.NET 2.9.0.50002

    所以...只是一个警告(我的机器上也有)。

    框架版本:v4.0.30319 说明:进程因未处理的异常而终止。 异常信息:

    Apache.Ignite.Core.Common.IgniteException
       at Apache.Ignite.Core.Impl.Unmanaged.Jni.JvmDll.Load(System.String, Apache.Ignite.Core.Log.ILogger)
       at Apache.Ignite.Core.Ignition.Start(Apache.Ignite.Core.IgniteConfiguration)
       at Nop.Web.Program.Main(System.String[])
    

    嗯...添加 apache.ingite.nlog 会引发 PROCESS FAILURE 主机是带有 Windows Server 2012 64 位的虚拟机

    还有其他想法请...

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-01-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-06-17
      • 2022-12-04
      • 2013-09-22
      • 2016-12-07
      相关资源
      最近更新 更多