为了账号安全,请及时绑定邮箱和手机立即绑定

阿帕奇点燃 IGFS 不使用非堆空间

阿帕奇点燃 IGFS 不使用非堆空间

隔江千里 2022-09-22 16:14:43

我正在使用阿帕奇点燃2.6。我正在使用 Ignite 文件系统,当我一遍又一遍地将大约 25 MB 的特定文件写入 IGFS 时,数据不会保存到非堆空间中。相反,它会进入堆,该堆受垃圾回收的影响,并且速度相对较慢。如何让 IGFS 将文件保存到我为其分配的大堆空间中?


高级架构 - 我现在有一个在雄猫内部运行的客户端点火节点,以及一个服务器点火节点,我打算将这些数据存储在该节点上。一旦我按预期工作,就可以进行缩放 - 但由于上述问题,它非常慢。当它非常快地耗尽堆空间时,它也会进行OMM。问题是,我希望它使用我分配的30G非堆空间!


我打算把它作为一个内存缓存。我正在为JVM分配2 G堆空间和30G非堆空间。非堆空间永远不会被使用,因此内存不足。我已经确认不使用JMX控制台内存选项卡使用非堆空间 - 非堆空间保持在远低于100M,而堆空间迅速膨胀到2G,然后JVM崩溃。


详细信息:首先,我的点火配置(弹簧xml):


 <?xml version="1.0" encoding="UTF-8"?>

 <beans xmlns="http://www.springframework.org/schema/beans"

   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

   xsi:schemaLocation="http://www.springframework.org/schema/beans

   http://www.springframework.org/schema/beans/spring-beans.xsd">


<bean id="propertyConfigurer" class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">

    <property name="systemPropertiesModeName" value="SYSTEM_PROPERTIES_MODE_FALLBACK"/>

    <property name="searchSystemEnvironment" value="true"/>

</bean>

<bean id="ignite.cfg" class="org.apache.ignite.configuration.IgniteConfiguration">

    <property name="marshaller">

        <bean class="org.apache.ignite.internal.binary.BinaryMarshaller" />

    </property>


    <property name="fileSystemConfiguration">

        <list>

            <bean class="org.apache.ignite.configuration.FileSystemConfiguration">

                <property name="name" value="igfs"/>

                <property name="blockSize" value="#{128 * 1024}"/>

                <property name="perNodeBatchSize" value="512"/>

                <property name="perNodeParallelBatchCount" value="16"/>

                <property name="prefetchBlocks" value="32"/>

            </bean>

        </list>

    </property>


以下是我用来启动点火服务器进程的脚本。它是一个在具有 64 G RAM 和 40 G 磁盘空间的 Linux 计算机上运行的外壳脚本。


这是创建我的客户端 igfs 对象的代码,通过该代码,我保存文件以点燃。它们往往偏大。



查看完整描述

1 回答

?
犯罪嫌疑人X

TA贡献1748条经验 获得超4个赞

数据完全可以保存到堆外,但您应该知道,IGFS 操作中涉及的许多瞬态对象仍将短暂地保存在堆上(之后为 GCed)。

“JMX 控制台内存选项卡 - 非堆空间”是错误的衡量指标。我不认为有任何JVM指标用于堆外。但是,Ignite 将定期打印堆外统计信息。

为什么你会耗尽内存并不明显。您是否尝试过收集堆转储并对其进行分析?


查看完整回答
反对 回复 2022-09-22

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信