I see DEL file descriptors as well.

java    2978 root  DEL    REG             202,16           1074192884
/mnt/data1/kafka/flirt_tasks-1/00000000000143874814.index.deleted

Using java from Oracle

java version "1.7.0_72"
Java(TM) SE Runtime Environment (build 1.7.0_72-b14)
Java HotSpot(TM) 64-Bit Server VM (build 24.72-b04, mixed mode)




On Sun, Mar 1, 2015 at 11:14 PM, Jaikiran Pai <jai.forums2...@gmail.com>
wrote:

> One thing to remember is that the .index files are memory-mapped [1] which
> in Java means that the file descriptors may not be released even when the
> program is done using it. A garbage collection is expected to close such
> resources, but forcing a System.gc() is only a hint and thus doesn't
> guarantee that it will trigger the garbage collection and close that
> resource. More details in [2]. In order to confirm that this is what you
> are running into, can you print the output of the following:
>
> lsof -p <broker-pid> | grep .deleted
>
> Before running that command do wait for at least the retention timeout and
> file deletion delay to have actually passed. The interesting part in that
> output would be the "type" column. For example, in my case it shows DEL as
> the value for that column:
>
> java    7518 jaikiran  DEL    REG                8,6 1453306
> /tmp/kafka-logs/hey-0/00000000000000000000.index.deleted
>
> when the index file has really been deleted but the JVM hasn't yet let go
> off the file descriptor resource. I did try to run a gc() from the jconsole
> MBean for that process, but that too didn't free this resource, but I
> didn't really expect it to, since there's not much control on GC itself.
>
> By the way which exact vendor and version of Java do you use? [3] suggests
> that an update in Oracle Java 1.6 has a workaround to this problem, but
> that workaround only comes into picture when a subsequent FileChannel.map
> calls results in a OOM.
>
> [1] http://docs.oracle.com/javase/7/docs/api/java/nio/
> MappedByteBuffer.html
> [2] http://bugs.java.com/view_bug.do?bug_id=4724038
> [3] http://bugs.java.com/view_bug.do?bug_id=6417205
>
> -Jaikiran
>
>
> On Monday 02 March 2015 10:30 AM, Guangle Fan wrote:
>
>> Slightly different from what I observed.
>>
>> Broker box has 800GB disk space. By setting the appropriate log retention,
>> it's supposed to hold the log size. But then the usage of disk hits 90%,
>> and by doing nothing but restarting broker server. It free 40% disk space.
>> It's for sure the speed of the traffic won't be able to fill 40% disk
>> space
>> within one minute period (log.delete.delay.ms).
>>
>> The obvious change before and after restart broker server is broker server
>> frees tons of file descriptors of .index. Most of those file descriptors
>> are very old.
>>
>> lsof -p  <broker_pid> | grep .deleted
>>
>> Don't know how come kafka didn't release those file descriptors and what's
>> the dial of it.
>>
>>
>>
>>
>>
>>
>>
>>
>> On Sun, Mar 1, 2015 at 12:50 PM, Mayuresh Gharat <
>> gharatmayures...@gmail.com
>>
>>> wrote:
>>> Also I suppose when the broker starts up it will remove the files that
>>> are
>>> marked with suffix .deleted and that's why you can see the free disk
>>> space
>>> on restarting. Guozhang can correct me if I am wrong.
>>>
>>> Thanks,
>>>
>>> Mayuresh
>>>
>>> On Sat, Feb 28, 2015 at 9:27 PM, Guozhang Wang <wangg...@gmail.com>
>>> wrote:
>>>
>>>  Guangle,
>>>>
>>>> The deletion of the segment log / index files are async, i.e. when Kafka
>>>> decide to clean the logs, it only adds a suffix ".deleted" to the files
>>>> such that it will not be access any more by other Kafka threads. The
>>>>
>>> actual
>>>
>>>> file deletion will be executed later, with period controlled by "
>>>> file.delete.delay.ms" (default 1 minute).
>>>>
>>>> On Fri, Feb 27, 2015 at 9:49 PM, Guangle Fan <fanguan...@gmail.com>
>>>>
>>> wrote:
>>>
>>>> Hi,
>>>>>
>>>>> After Kafka cleaned .log / .index files based on topic retention. I can
>>>>> still lsof a lot of .index.deleted files. And df shows usage on disk
>>>>>
>>>> space
>>>>
>>>>> is accumulated to full.
>>>>>
>>>>> When this happened, just by restarting broker, it will immediately free
>>>>> those disk space. I seems to me kafka after cleaning expired files
>>>>>
>>>> still
>>>
>>>> hold file descriptors which lead to disk space still being held.
>>>>>
>>>>> How do you config kafka to let kafka release file descriptors in this
>>>>>
>>>> case
>>>>
>>>>> ?
>>>>>
>>>>> Using kafka 0.8.1.1
>>>>>
>>>>> Regards,
>>>>>
>>>>> Guangle
>>>>>
>>>>>
>>>>
>>>> --
>>>> -- Guozhang
>>>>
>>>>
>>>
>>> --
>>> -Regards,
>>> Mayuresh R. Gharat
>>> (862) 250-7125
>>>
>>>
>

Reply via email to