I think your best course of action is to go to the Kafka forums. 

> On Mar 10, 2022, at 10:12 PM, Rakesh K R <rakeshkr1...@gmail.com> wrote:
> 
> Hi,
> Thank you. I know its kafka related question but thread started with issue in 
> golang but later we are suspecting issue in go kafka library configuration.
> FYI, I am interested in kafka client or producer properties. 
> log.retention.hours or log.retention.bytes are kafka broker related 
> configuration. so I am confused now
> 
>> On Friday, March 11, 2022 at 1:34:23 AM UTC+5:30 ren...@ix.netcom.com wrote:
>> Look at log.retention.hours and log.retention.bytes
>> 
>> You should post this in the Kafka forums not the Go ones. 
>> 
>>>> On Mar 10, 2022, at 11:04 AM, Rakesh K R <rakesh...@gmail.com> wrote:
>>>> 
>>> Hi,
>> 
>>> Sorry I am not sure which kafka configuration are you referring here. Can 
>>> you please point me to the right configuration responsible for retaining 
>>> the message for replay.
>>> I see following properties which might be related but not sure:
>>> queued.min.messages
>>> queued.max.messages.kbytes
>>> queue.buffering.max.messages
>>> queue.buffering.max.kbytes
>>> linger.ms ---> this is currently set to 1000
>>> message.timeout.ms
>>> 
>>> Thank you
>>> 
>>>> On Thursday, March 10, 2022 at 9:50:50 PM UTC+5:30 ren...@ix.netcom.com 
>>>> wrote:
>>>> You need to configure Kafka for how long it retains messages for replay - 
>>>> or some other option to store on disk. 
>>>> 
>>>>>> On Mar 10, 2022, at 10:07 AM, Rakesh K R <rakesh...@gmail.com> wrote:
>>>>>> 
>>>>> Tamas,
>>>> 
>>>>> Thanks you. So any suggestion on how to make application release this 
>>>>> 900MiB memory back to OS so that pod will not end up in OOMKilled state?
>>>>> 
>>>>>>> On Thursday, March 10, 2022 at 1:45:18 PM UTC+5:30 Tamás Gulácsi wrote:
>>>>>>> gopkg.in/confluentinc/confluent-kafka-go.v1/kafka._Cfunc_GoBytes
>>>>>>> 
>>>>>>> says it uses cgo, hiding it's memory usage from Go. I bet that 900MiB 
>>>>>>> of memory is there...
>>>>>>> 
>>>>>>> 
>>>>>>> Rakesh K R a következőt írta (2022. március 10., csütörtök, 7:26:57 
>>>>>>> UTC+1):
>>>>>>>> HI,
>>>>>>>> I have a micro service application deployed on kubernetes cluster(with 
>>>>>>>> 1gb of pod memory limit). This app receive continuous messages(500 
>>>>>>>> message per second) from producer app over kafka interface(these 
>>>>>>>> messages are encoded in protobuf format.)
>>>>>>>> 
>>>>>>>> Basic application flow:
>>>>>>>> 1. Get the message one by one from kafka
>>>>>>>> 2. unmarshal proto message
>>>>>>>> 3. apply business logic
>>>>>>>> 4. write the message to redis cache(in []byte format)
>>>>>>>> 
>>>>>>>> When pod starts memory will be around 50mb and memory starts 
>>>>>>>> increasing as traffic flows into the application. It is never released 
>>>>>>>> back to OS. As a result pod restarts with error code OOMKilled.
>>>>>>>> I have integrated grafana to see memory usage like RSS, heap, stack.
>>>>>>>> During this traffic flow, in-use heap size is 80mb, idle heap is 80mb 
>>>>>>>> where as process resident memory is at 800-1000MB. Stopping the 
>>>>>>>> traffic completely for hours did not help and RSS continue to remain 
>>>>>>>> in 1000mb.
>>>>>>>> Tried to analyze this with pprof and it reports only 80mb are in 
>>>>>>>> in-use section. So I am wondering where these remaining 800-1000mb of 
>>>>>>>> pods memory went. Also application allocates memory like 
>>>>>>>> slices/maps/strings to perform business logic(see alloc_space pprof 
>>>>>>>> output below)
>>>>>>>> 
>>>>>>>> I tried couple of experiments:
>>>>>>>> 1. Calling FreeOsMemory() in the app but that did not help
>>>>>>>> 2. invoking my app with GODEBUG=madvdontneed=1 my_app_executable and 
>>>>>>>> did not help
>>>>>>>> 3. Leaving the application for 5-6hrs without any traffic to see 
>>>>>>>> whether memory comes down. It  did not help
>>>>>>>> 4. pprof shows only 80mb of heap in use
>>>>>>>> 5. Tried upgrading golang version from 1.13 to 1.16 as there were some 
>>>>>>>> improvements in runtime. It did not help
>>>>>>>> 
>>>>>>>> pprof output for alloc_space:
>>>>>>>> 
>>>>>>>> (pprof) top20
>>>>>>>> Showing nodes accounting for 481.98GB, 91.57% of 526.37GB total
>>>>>>>> Dropped 566 nodes (cum <= 2.63GB)
>>>>>>>> Showing top 20 nodes out of 114
>>>>>>>>       flat  flat%   sum%        cum   cum%
>>>>>>>>    78.89GB 14.99% 14.99%    78.89GB 14.99%  
>>>>>>>> github.com/go-redis/redis/v7/internal/proto.(*Reader).readStringReply
>>>>>>>>    67.01GB 12.73% 27.72%   285.33GB 54.21%  
>>>>>>>> airgroup/internal/wrapper/agrediswrapper.GetAllConfigurationForGroups
>>>>>>>>    58.75GB 11.16% 38.88%    58.75GB 11.16%  
>>>>>>>> google.golang.org/protobuf/internal/impl.(*MessageInfo).MessageOf
>>>>>>>>    52.26GB  9.93% 48.81%    52.26GB  9.93%  reflect.unsafe_NewArray
>>>>>>>>    45.78GB  8.70% 57.50%    46.38GB  8.81%  
>>>>>>>> encoding/json.(*decodeState).literalStore
>>>>>>>>    36.98GB  7.02% 64.53%    36.98GB  7.02%  reflect.New
>>>>>>>>    28.20GB  5.36% 69.89%    28.20GB  5.36%  
>>>>>>>> gopkg.in/confluentinc/confluent-kafka-go.v1/kafka._Cfunc_GoBytes
>>>>>>>>    25.60GB  4.86% 74.75%    63.62GB 12.09%  
>>>>>>>> google.golang.org/protobuf/proto.MarshalOptions.marshal
>>>>>>>>    12.79GB  2.43% 77.18%   165.56GB 31.45%  
>>>>>>>> encoding/json.(*decodeState).object
>>>>>>>>    12.73GB  2.42% 79.60%    12.73GB  2.42%  reflect.mapassign
>>>>>>>>    11.05GB  2.10% 81.70%    63.31GB 12.03%  reflect.MakeSlice
>>>>>>>>    10.06GB  1.91% 83.61%    12.36GB  2.35%  
>>>>>>>> filterServersForDestinationDevicesAndSendToDistributionChan
>>>>>>>>     6.92GB  1.32% 84.92%   309.45GB 58.79%  
>>>>>>>> groupAndSendToConfigPolicyChannel
>>>>>>>>     6.79GB  1.29% 86.21%    48.85GB  9.28%  
>>>>>>>> publishInternalMsgToDistributionService
>>>>>>>>     6.79GB  1.29% 87.50%   174.81GB 33.21%  encoding/json.Unmarshal
>>>>>>>>     6.14GB  1.17% 88.67%     6.14GB  1.17%  
>>>>>>>> google.golang.org/protobuf/internal/impl.consumeBytes
>>>>>>>>     4.64GB  0.88% 89.55%    14.39GB  2.73%  
>>>>>>>> GetAllDevDataFromGlobalDevDataDb
>>>>>>>>     4.11GB  0.78% 90.33%    18.47GB  3.51%  
>>>>>>>> GetAllServersFromServerRecordDb
>>>>>>>>     3.27GB  0.62% 90.95%     3.27GB  0.62%  net.HardwareAddr.String
>>>>>>>>     3.23GB  0.61% 91.57%     3.23GB  0.61%  reflect.makemap
>>>>>>>> (pprof)
>>>>>>>> 
>>>>>>>> 
>>>>>>>> Need experts help in analyzing this issue.
>>>>>>>> 
>>>>>>>> Thanks in advance!!
>>>>>> 
>>>>> -- 
>>>>> You received this message because you are subscribed to the Google Groups 
>>>>> "golang-nuts" group.
>>>>> To unsubscribe from this group and stop receiving emails from it, send an 
>>>>> email to golang-nuts...@googlegroups.com.
>>>>> To view this discussion on the web visit 
>>>>> https://groups.google.com/d/msgid/golang-nuts/e9b91937-7bf5-4526-940f-2a60b2989ddfn%40googlegroups.com.
>>> 
>>> -- 
>>> You received this message because you are subscribed to the Google Groups 
>>> "golang-nuts" group.
>>> To unsubscribe from this group and stop receiving emails from it, send an 
>>> email to golang-nuts...@googlegroups.com.
>> 
>>> To view this discussion on the web visit 
>>> https://groups.google.com/d/msgid/golang-nuts/0b7a3c46-00f6-43ff-9db4-b0520282610an%40googlegroups.com.
> 
> -- 
> You received this message because you are subscribed to the Google Groups 
> "golang-nuts" group.
> To unsubscribe from this group and stop receiving emails from it, send an 
> email to golang-nuts+unsubscr...@googlegroups.com.
> To view this discussion on the web visit 
> https://groups.google.com/d/msgid/golang-nuts/70cbff4e-464f-4d4a-96da-e9c82ca89978n%40googlegroups.com.

-- 
You received this message because you are subscribed to the Google Groups 
"golang-nuts" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to golang-nuts+unsubscr...@googlegroups.com.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/golang-nuts/444CD915-60E7-4FEE-99F6-F167723D387C%40ix.netcom.com.

Reply via email to