<div dir="ltr"><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">@Artem what is the average size  of the files for your apaches ?<br></blockquote><div><br></div><div>The average size is probably 15-20MB, but the files are as large as 100MB+. The files are a combination of Android APK files and image files.</div><div><div dir="ltr" class="gmail_signature" data-smartmail="gmail_signature"><div dir="ltr"><div><div dir="ltr"><div><div dir="ltr"><div><div dir="ltr"><div><div dir="ltr"><div><div dir="ltr"><br>Sincerely,<br>Artem<br><br>--<br>Founder, <a href="http://www.androidpolice.com" target="_blank">Android Police</a>, <a href="http://www.apkmirror.com/" style="font-size:12.8px" target="_blank">APK Mirror</a><span style="font-size:12.8px">, Illogical Robot LLC</span></div><div dir="ltr"><a href="http://beerpla.net/" target="_blank">beerpla.net</a> | <a href="http://twitter.com/ArtemR" target="_blank">@ArtemR</a><br></div></div></div></div></div></div></div></div></div></div></div></div></div><br></div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Fri, May 15, 2020 at 11:20 PM Strahil Nikolov &lt;<a href="mailto:hunter86_bg@yahoo.com">hunter86_bg@yahoo.com</a>&gt; wrote:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">On May 16, 2020 1:14:17 AM GMT+03:00, Artem Russakovskii &lt;<a href="mailto:archon810@gmail.com" target="_blank">archon810@gmail.com</a>&gt; wrote:<br>
&gt;Hi Hari,<br>
&gt;<br>
&gt;Thanks for the analysis.<br>
&gt;<br>
&gt;   1. I understand why the rebooted node would have 0 heal state files<br>
&gt;whereas the other nodes would be going up. The problem with 5.11 was<br>
&gt;that<br>
&gt;   there was a bug that prevented the heal from completing, which as I<br>
&gt;   mentioned was fixed in 5.13.<br>
&gt;<br>
&gt;   2. If the number of files to heal is known, why are operations like<br>
&gt;md5sum needed to perform the heal at all? Why doesn&#39;t the auto heal<br>
&gt;agent<br>
&gt;just go through the list one file at a time and perform the heal, then<br>
&gt;mark<br>
&gt;the files as healed? From what I&#39;ve seen, even requesting a manual heal<br>
&gt;didn&#39;t do anything until those files were touched in some way (like<br>
&gt;md5sum).<br>
&gt;<br>
&gt;   3. cscope? I am unable to find what you&#39;re talking about -<br>
&gt;   <a href="http://cscope.sourceforge.net/" rel="noreferrer" target="_blank">http://cscope.sourceforge.net/</a> seems to be a code search tool?<br>
&gt;<br>
&gt;   4. What&#39;s the best way to analyze and present the data about what&#39;s<br>
&gt;   raising the load to 100+ on all nodes after reboots? If there&#39;s some<br>
&gt;monitoring tool I could run, reproduce the issue, then save the output<br>
&gt;and<br>
&gt;   send it here, that&#39;d be great.<br>
&gt;<br>
&gt; 5. Based on what I&#39;ve seen when I straced apache processes, they would<br>
&gt;all hang for a long time when they ran across some of the gluster data.<br>
&gt; Specifically, one of the directories (with only several files, nothing<br>
&gt;  special) which may be queried in some way by a lot of page loads (for<br>
&gt;context, we have 2 busy WordPress sites), would come up a lot in<br>
&gt;straces<br>
&gt;and hang. I even tried moving this directory out of gluster and adding<br>
&gt;a<br>
&gt; symlink, but I&#39;m not sure that helped. I wonder if multiple conditions<br>
&gt;cause frequent read access to a certain resource in gluster to spike<br>
&gt;out of<br>
&gt;   control and go haywire.<br>
&gt;Here, the gluster root directory is SITE/public/wp-content/uploads, and<br>
&gt;   the dirs I saw the most are symlinked as follows:<br>
&gt;   lrwxrwxrwx   1 archon810 users       73 Apr 26 15:47<br>
&gt; wp-security-audit-log -&gt; SITE/public/wp-content/wp-security-audit-log/<br>
&gt;(belongs to <a href="https://wordpress.org/plugins/wp-security-audit-log/" rel="noreferrer" target="_blank">https://wordpress.org/plugins/wp-security-audit-log/</a> but<br>
&gt;the<br>
&gt;   Pro version)<br>
&gt;<br>
&gt;   A sample strace log of requests to this dir:<br>
&gt;   [2020-05-15 15:10:15 PDT]<br>
&gt;   stat(&quot;SITE/public/wp-content/uploads/wp-security-audit-log&quot;,<br>
&gt;   {st_mode=S_IFDIR|0755, st_size=4096, ...}) = 0<br>
&gt;   [2020-05-15 15:10:15 PDT]<br>
&gt;access(&quot;SITE/public/wp-content/uploads/wp-security-audit-log&quot;, R_OK) =<br>
&gt;0<br>
&gt;   [2020-05-15 15:10:15 PDT]<br>
&gt;access(&quot;SITE/public/wp-content/uploads/wp-security-audit-log/custom-alerts.php&quot;,<br>
&gt;   F_OK) = -1 ENOENT (No such file or directory)<br>
&gt;   [2020-05-15 15:10:15 PDT]<br>
&gt;stat(&quot;SITE/public/wp-content/uploads/wp-security-audit-log/custom-sensors/&quot;,<br>
&gt;   0x7ffeff14c4d0) = -1 ENOENT (No such file or directory)<br>
&gt;   [2020-05-15 15:10:18 PDT]<br>
&gt;   stat(&quot;SITE/public/wp-content/uploads/wp-security-audit-log&quot;,<br>
&gt;   {st_mode=S_IFDIR|0775, st_size=4096, ...}) = 0<br>
&gt;   [2020-05-15 15:10:18 PDT]<br>
&gt;access(&quot;SITE/public/wp-content/uploads/wp-security-audit-log&quot;, R_OK) =<br>
&gt;0<br>
&gt;   [2020-05-15 15:10:18 PDT]<br>
&gt;access(&quot;SITE/public/wp-content/uploads/wp-security-audit-log/custom-alerts.php&quot;,<br>
&gt;   F_OK) = -1 ENOENT (No such file or directory)<br>
&gt;   [2020-05-15 15:10:18 PDT]<br>
&gt;stat(&quot;SITE/public/wp-content/uploads/wp-security-audit-log/custom-sensors/&quot;,<br>
&gt;   0x7ffeff14c4d0) = -1 ENOENT (No such file or directory)<br>
&gt;   [2020-05-15 15:10:19 PDT]<br>
&gt;   stat(&quot;SITE/public/wp-content/uploads/wp-security-audit-log&quot;,<br>
&gt;   {st_mode=S_IFDIR|0755, st_size=4096, ...}) = 0<br>
&gt;   [2020-05-15 15:10:19 PDT]<br>
&gt;access(&quot;SITE/public/wp-content/uploads/wp-security-audit-log&quot;, R_OK) =<br>
&gt;0<br>
&gt;   [2020-05-15 15:10:19 PDT]<br>
&gt;access(&quot;SITE/public/wp-content/uploads/wp-security-audit-log/custom-alerts.php&quot;,<br>
&gt;   F_OK) = -1 ENOENT (No such file or directory)<br>
&gt;   [2020-05-15 15:10:19 PDT]<br>
&gt;stat(&quot;SITE/public/wp-content/uploads/wp-security-audit-log/custom-sensors/&quot;,<br>
&gt;   0x7ffeff14c4d0) = -1 ENOENT (No such file or directory)<br>
&gt;   [2020-05-15 15:10:21 PDT]<br>
&gt;   stat(&quot;SITE/public/wp-content/uploads/wp-security-audit-log&quot;,<br>
&gt;   {st_mode=S_IFDIR|0775, st_size=4096, ...}) = 0<br>
&gt;   [2020-05-15 15:10:21 PDT]<br>
&gt;access(&quot;SITE/public/wp-content/uploads/wp-security-audit-log&quot;, R_OK) =<br>
&gt;0<br>
&gt;   [2020-05-15 15:10:21 PDT]<br>
&gt;access(&quot;SITE/public/wp-content/uploads/wp-security-audit-log/custom-alerts.php&quot;,<br>
&gt;   F_OK) = -1 ENOENT (No such file or directory)<br>
&gt;   [2020-05-15 15:10:21 PDT]<br>
&gt;stat(&quot;SITE/public/wp-content/uploads/wp-security-audit-log/custom-sensors/&quot;,<br>
&gt;   0x7ffeff14c4d0) = -1 ENOENT (No such file or directory)<br>
&gt;   [2020-05-15 15:10:23 PDT]<br>
&gt;   stat(&quot;SITE/public/wp-content/uploads/wp-security-audit-log&quot;,<br>
&gt;   {st_mode=S_IFDIR|0755, st_size=4096, ...}) = 0<br>
&gt;   [2020-05-15 15:10:23 PDT]<br>
&gt;access(&quot;SITE/public/wp-content/uploads/wp-security-audit-log&quot;, R_OK) =<br>
&gt;0<br>
&gt;   [2020-05-15 15:10:23 PDT]<br>
&gt;access(&quot;SITE/public/wp-content/uploads/wp-security-audit-log/custom-alerts.php&quot;,<br>
&gt;   F_OK) = -1 ENOENT (No such file or directory)<br>
&gt;   [2020-05-15 15:10:23 PDT]<br>
&gt;stat(&quot;SITE/public/wp-content/uploads/wp-security-audit-log/custom-sensors/&quot;,<br>
&gt;   0x7ffeff14c4d0) = -1 ENOENT (No such file or directory)<br>
&gt;   [2020-05-15 15:10:25 PDT]<br>
&gt;   stat(&quot;SITE/public/wp-content/uploads/wp-security-audit-log&quot;,<br>
&gt;   {st_mode=S_IFDIR|0755, st_size=4096, ...}) = 0<br>
&gt;   [2020-05-15 15:10:25 PDT]<br>
&gt;access(&quot;SITE/public/wp-content/uploads/wp-security-audit-log&quot;, R_OK) =<br>
&gt;0<br>
&gt;   [2020-05-15 15:10:25 PDT]<br>
&gt;access(&quot;SITE/public/wp-content/uploads/wp-security-audit-log/custom-alerts.php&quot;,<br>
&gt;   F_OK) = -1 ENOENT (No such file or directory)<br>
&gt;   [2020-05-15 15:10:25 PDT]<br>
&gt;stat(&quot;SITE/public/wp-content/uploads/wp-security-audit-log/custom-sensors/&quot;,<br>
&gt;   0x7ffeff14c4d0) = -1 ENOENT (No such file or directory)<br>
&gt;   [2020-05-15 15:10:27 PDT]<br>
&gt;   stat(&quot;SITE/public/wp-content/uploads/wp-security-audit-log&quot;,<br>
&gt;   {st_mode=S_IFDIR|0775, st_size=4096, ...}) = 0<br>
&gt;   [2020-05-15 15:10:27 PDT]<br>
&gt;access(&quot;SITE/public/wp-content/uploads/wp-security-audit-log&quot;, R_OK) =<br>
&gt;0<br>
&gt;   [2020-05-15 15:10:27 PDT]<br>
&gt;access(&quot;SITE/public/wp-content/uploads/wp-security-audit-log/custom-alerts.php&quot;,<br>
&gt;   F_OK) = -1 ENOENT (No such file or directory)<br>
&gt;   [2020-05-15 15:10:27 PDT]<br>
&gt;stat(&quot;SITE/public/wp-content/uploads/wp-security-audit-log/custom-sensors/&quot;,<br>
&gt;   0x7ffeff14c4d0) = -1 ENOENT (No such file or directory)<br>
&gt;<br>
&gt;The load spikes and everything hanging is seriously stressing me out<br>
&gt;because at any point it can cause an outage for us.<br>
&gt;<br>
&gt;Sincerely,<br>
&gt;Artem<br>
&gt;<br>
&gt;--<br>
&gt;Founder, Android Police &lt;<a href="http://www.androidpolice.com" rel="noreferrer" target="_blank">http://www.androidpolice.com</a>&gt;, APK Mirror<br>
&gt;&lt;<a href="http://www.apkmirror.com/" rel="noreferrer" target="_blank">http://www.apkmirror.com/</a>&gt;, Illogical Robot LLC<br>
&gt;<a href="http://beerpla.net" rel="noreferrer" target="_blank">beerpla.net</a> | @ArtemR &lt;<a href="http://twitter.com/ArtemR" rel="noreferrer" target="_blank">http://twitter.com/ArtemR</a>&gt;<br>
&gt;<br>
&gt;<br>
&gt;On Thu, May 7, 2020 at 11:32 PM Hari Gowtham &lt;<a href="mailto:hgowtham@redhat.com" target="_blank">hgowtham@redhat.com</a>&gt;<br>
&gt;wrote:<br>
&gt;<br>
&gt;&gt; The heal info is working fine. The explanation to what&#39;s happening:<br>
&gt;&gt; When a node goes down, the changes to this node can&#39;t be done. So on<br>
&gt;the<br>
&gt;&gt; other nodes which were up, get the changes and keeps track saying<br>
&gt;&gt; these files were changed (note: this change hasn&#39;t been reflected to<br>
&gt;the<br>
&gt;&gt; node which was down). Once the node down comes back up,<br>
&gt;&gt; it doesn&#39;t know what happened when it was down. But the other nodes<br>
&gt;know<br>
&gt;&gt; that there are a few changes which didn&#39;t make it to the rebooted<br>
&gt;node.<br>
&gt;&gt; So the node down is blamed by the other nodes .This is what is shown<br>
&gt;in<br>
&gt;&gt; the heal info. As the node which was up doesn&#39;t have any change that<br>
&gt;went<br>
&gt;&gt; into that node alone.<br>
&gt;&gt; It says 0 files to be healed and the other nodes as it has the data<br>
&gt;say<br>
&gt;&gt; which are the files that need to heal.<br>
&gt;&gt; This is the expected working.<br>
&gt;&gt; So as per the rebooted node, heal info is working fine.<br>
&gt;&gt;<br>
&gt;&gt; About healing the file itself:<br>
&gt;&gt; Doing an operation on a file, triggers client side heal as per the<br>
&gt;design,<br>
&gt;&gt; that&#39;s the reason these files are getting corrected after the md5sum<br>
&gt;(I<br>
&gt;&gt; hope this is done from the client side not the backend itself).<br>
&gt;&gt; So this is expected.<br>
&gt;&gt; About the heals not happening for a long time, there can be some<br>
&gt;issue<br>
&gt;&gt; there.<br>
&gt;&gt; @Karthik Subrahmanya &lt;<a href="mailto:ksubrahm@redhat.com" target="_blank">ksubrahm@redhat.com</a>&gt; is the better person to<br>
&gt;help<br>
&gt;&gt; you with this.<br>
&gt;&gt;<br>
&gt;&gt; About the CPU usage going higher:<br>
&gt;&gt; We need info about what is consuming more CPU.<br>
&gt;&gt; Glusterd needs to do a bit of handshake and connect after reboot.<br>
&gt;During<br>
&gt;&gt; this a little bit of data is transferred as well.<br>
&gt;&gt; If the number of nodes goes higher it can contribute to hike.<br>
&gt;&gt; Similarly, if the heal is happening, then it can increase the usage.<br>
&gt;&gt; So we need info about what is consuming the cpu to know if it&#39;s<br>
&gt;expected<br>
&gt;&gt; or not.<br>
&gt;&gt; If this hike is expected, you can try using cscope to restrict the<br>
&gt;cpu<br>
&gt;&gt; usage by that particular process.<br>
&gt;&gt;<br>
&gt;&gt; On Tue, Apr 28, 2020 at 3:02 AM Artem Russakovskii<br>
&gt;&lt;<a href="mailto:archon810@gmail.com" target="_blank">archon810@gmail.com</a>&gt;<br>
&gt;&gt; wrote:<br>
&gt;&gt;<br>
&gt;&gt;&gt; Good news, after upgrading to 5.13 and running this scenario again,<br>
&gt;the<br>
&gt;&gt;&gt; self heal actually succeeded without my intervention following a<br>
&gt;server<br>
&gt;&gt;&gt; reboot.<br>
&gt;&gt;&gt;<br>
&gt;&gt;&gt; The load was still high during this process, but at least the<br>
&gt;endless<br>
&gt;&gt;&gt; heal issue is resolved.<br>
&gt;&gt;&gt;<br>
&gt;&gt;&gt; I&#39;d still love to hear from the team on managing heal load spikes.<br>
&gt;&gt;&gt;<br>
&gt;&gt;&gt; Sincerely,<br>
&gt;&gt;&gt; Artem<br>
&gt;&gt;&gt;<br>
&gt;&gt;&gt; --<br>
&gt;&gt;&gt; Founder, Android Police &lt;<a href="http://www.androidpolice.com" rel="noreferrer" target="_blank">http://www.androidpolice.com</a>&gt;, APK Mirror<br>
&gt;&gt;&gt; &lt;<a href="http://www.apkmirror.com/" rel="noreferrer" target="_blank">http://www.apkmirror.com/</a>&gt;, Illogical Robot LLC<br>
&gt;&gt;&gt; <a href="http://beerpla.net" rel="noreferrer" target="_blank">beerpla.net</a> | @ArtemR &lt;<a href="http://twitter.com/ArtemR" rel="noreferrer" target="_blank">http://twitter.com/ArtemR</a>&gt;<br>
&gt;&gt;&gt;<br>
&gt;&gt;&gt;<br>
&gt;&gt;&gt; On Sun, Apr 26, 2020 at 3:13 PM Artem Russakovskii<br>
&gt;&lt;<a href="mailto:archon810@gmail.com" target="_blank">archon810@gmail.com</a>&gt;<br>
&gt;&gt;&gt; wrote:<br>
&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt; Hi all,<br>
&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt; I&#39;ve been observing this problem for a long time now and it&#39;s time<br>
&gt;to<br>
&gt;&gt;&gt;&gt; finally figure out what&#39;s going on.<br>
&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt; We&#39;re running gluster 5.11 and have a 10TB 1 x 4 = 4 replicate<br>
&gt;volume.<br>
&gt;&gt;&gt;&gt; I&#39;ll include its slightly redacted config below.<br>
&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt; When I reboot one of the servers and it goes offline for a bit,<br>
&gt;when it<br>
&gt;&gt;&gt;&gt; comes back, heal info tells me there are some files and dirs that<br>
&gt;are &quot;heal<br>
&gt;&gt;&gt;&gt; pending&quot;. 0 &quot;split-brain&quot; and &quot;possibly healing&quot; - only &quot;heal<br>
&gt;pending&quot;<br>
&gt;&gt;&gt;&gt; are &gt;0.<br>
&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;    1. For some reason, the server that was rebooted shows &quot;heal<br>
&gt;&gt;&gt;&gt;    pending&quot; 0. All other servers show &quot;heal pending&quot; with some<br>
&gt;number, say 65.<br>
&gt;&gt;&gt;&gt;    2. We have cluster.self-heal-daemon enabled.<br>
&gt;&gt;&gt;&gt;    3. The logs are full of &quot;performing entry selfheal&quot; and<br>
&gt;&quot;completed<br>
&gt;&gt;&gt;&gt;    entry selfheal&quot; messages that continue to print endlessly.<br>
&gt;&gt;&gt;&gt;    4. This &quot;heal pending&quot; number never goes down by itself, but it<br>
&gt;does<br>
&gt;&gt;&gt;&gt;    if I run some operation on it, like md5sum.<br>
&gt;&gt;&gt;&gt;    5. When the server goes down for reboot and especially when it<br>
&gt;comes<br>
&gt;&gt;&gt;&gt;    back, the load on ALL servers shoots up through the roof (load<br>
&gt;of 100+) and<br>
&gt;&gt;&gt;&gt;    ends up bringing everything down, including apache and nginx. My<br>
&gt;theory is<br>
&gt;&gt;&gt;&gt;    that self-heal kicks in so hard that it kills IO on these<br>
&gt;attached Linode<br>
&gt;&gt;&gt;&gt;    block devices. However, after some time - say 10 minutes - the<br>
&gt;load<br>
&gt;&gt;&gt;&gt;    subsides, but the &quot;heal pending&quot; remains and the gluster logs<br>
&gt;continue to<br>
&gt;&gt;&gt;&gt;    output &quot;performing entry selfheal&quot; and &quot;completed entry<br>
&gt;selfheal&quot; messages.<br>
&gt;&gt;&gt;&gt;    This load spike has become a huge issue for us because it brings<br>
&gt;down the<br>
&gt;&gt;&gt;&gt;    whole site for entire minutes.<br>
&gt;&gt;&gt;&gt;    6. At this point in my investigation, I noticed that the<br>
&gt;&gt;&gt;&gt;    selfheal messages actually repeat for the same gfids over and<br>
&gt;over.<br>
&gt;&gt;&gt;&gt;    [2020-04-26 21:32:29.877987] I [MSGID: 108026]<br>
&gt;&gt;&gt;&gt;    [afr-self-heal-entry.c:897:afr_selfheal_entry_do]<br>
&gt;0-SNIP_data1-replicate-0:<br>
&gt;&gt;&gt;&gt;    performing entry selfheal on<br>
&gt;96d282cf-402f-455c-9add-5f03c088a1bc<br>
&gt;&gt;&gt;&gt;    [2020-04-26 21:32:29.901246] I [MSGID: 108026]<br>
&gt;&gt;&gt;&gt;    [afr-self-heal-common.c:1729:afr_log_selfheal]<br>
&gt;0-SNIP_data1-replicate-0:<br>
&gt;&gt;&gt;&gt;    Completed entry selfheal on<br>
&gt;96d282cf-402f-455c-9add-5f03c088a1bc. sources=<br>
&gt;&gt;&gt;&gt;    sinks=0 1 2<br>
&gt;&gt;&gt;&gt;    [2020-04-26 21:32:32.171959] I [MSGID: 108026]<br>
&gt;&gt;&gt;&gt;    [afr-self-heal-entry.c:897:afr_selfheal_entry_do]<br>
&gt;0-SNIP_data1-replicate-0:<br>
&gt;&gt;&gt;&gt;    performing entry selfheal on<br>
&gt;96d282cf-402f-455c-9add-5f03c088a1bc<br>
&gt;&gt;&gt;&gt;    [2020-04-26 21:32:32.225828] I [MSGID: 108026]<br>
&gt;&gt;&gt;&gt;    [afr-self-heal-common.c:1729:afr_log_selfheal]<br>
&gt;0-SNIP_data1-replicate-0:<br>
&gt;&gt;&gt;&gt;    Completed entry selfheal on<br>
&gt;96d282cf-402f-455c-9add-5f03c088a1bc. sources=<br>
&gt;&gt;&gt;&gt;    sinks=0 1 2<br>
&gt;&gt;&gt;&gt;    [2020-04-26 21:32:33.346990] I [MSGID: 108026]<br>
&gt;&gt;&gt;&gt;    [afr-self-heal-entry.c:897:afr_selfheal_entry_do]<br>
&gt;0-SNIP_data1-replicate-0:<br>
&gt;&gt;&gt;&gt;    performing entry selfheal on<br>
&gt;96d282cf-402f-455c-9add-5f03c088a1bc<br>
&gt;&gt;&gt;&gt;    [2020-04-26 21:32:33.374413] I [MSGID: 108026]<br>
&gt;&gt;&gt;&gt;    [afr-self-heal-common.c:1729:afr_log_selfheal]<br>
&gt;0-SNIP_data1-replicate-0:<br>
&gt;&gt;&gt;&gt;    Completed entry selfheal on<br>
&gt;96d282cf-402f-455c-9add-5f03c088a1bc. sources=<br>
&gt;&gt;&gt;&gt;    sinks=0 1 2<br>
&gt;&gt;&gt;&gt;    7. I used gfid-resolver.sh from<br>
&gt;<a href="https://gist.github.com/4392640.git" rel="noreferrer" target="_blank">https://gist.github.com/4392640.git</a><br>
&gt;&gt;&gt;&gt;    to resolve this gfid to the real location and yup - it was one<br>
&gt;of the files<br>
&gt;&gt;&gt;&gt;    (a dir actually) listed as &quot;heal pending&quot; in heal info. As soon<br>
&gt;as I ran<br>
&gt;&gt;&gt;&gt;    md5sum on the file inside (which was also listed in &quot;heal<br>
&gt;pending&quot;), the<br>
&gt;&gt;&gt;&gt;    log messages stopped repeating for this entry and it disappeared<br>
&gt;from &quot;heal<br>
&gt;&gt;&gt;&gt;    pending&quot; heal info. These were the final log lines:<br>
&gt;&gt;&gt;&gt;    [2020-04-26 21:32:35.642662] I [MSGID: 108026]<br>
&gt;&gt;&gt;&gt;    [afr-self-heal-metadata.c:52:__afr_selfheal_metadata_do]<br>
&gt;&gt;&gt;&gt;    0-SNIP_data1-replicate-0: performing metadata selfheal on<br>
&gt;&gt;&gt;&gt;    96d282cf-402f-455c-9add-5f03c088a1bc<br>
&gt;&gt;&gt;&gt;    [2020-04-26 21:32:35.658714] I [MSGID: 108026]<br>
&gt;&gt;&gt;&gt;    [afr-self-heal-common.c:1729:afr_log_selfheal]<br>
&gt;0-SNIP_data1-replicate-0:<br>
&gt;&gt;&gt;&gt;    Completed metadata selfheal on<br>
&gt;96d282cf-402f-455c-9add-5f03c088a1bc.<br>
&gt;&gt;&gt;&gt;    sources=0 [1] 2  sinks=3<br>
&gt;&gt;&gt;&gt;    [2020-04-26 21:32:35.686509] I [MSGID: 108026]<br>
&gt;&gt;&gt;&gt;    [afr-self-heal-entry.c:897:afr_selfheal_entry_do]<br>
&gt;0-SNIP_data1-replicate-0:<br>
&gt;&gt;&gt;&gt;    performing entry selfheal on<br>
&gt;96d282cf-402f-455c-9add-5f03c088a1bc<br>
&gt;&gt;&gt;&gt;    [2020-04-26 21:32:35.720387] I [MSGID: 108026]<br>
&gt;&gt;&gt;&gt;    [afr-self-heal-common.c:1729:afr_log_selfheal]<br>
&gt;0-SNIP_data1-replicate-0:<br>
&gt;&gt;&gt;&gt;    Completed entry selfheal on<br>
&gt;96d282cf-402f-455c-9add-5f03c088a1bc. sources=0<br>
&gt;&gt;&gt;&gt;    [1] 2  sinks=3<br>
&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt; I have to repeat this song and dance every time I reboot servers<br>
&gt;and run<br>
&gt;&gt;&gt;&gt; md5sum on each &quot;heal pending&quot; file or else the messages will<br>
&gt;continue<br>
&gt;&gt;&gt;&gt; presumably indefinitely. In the meantime, the files seem to be fine<br>
&gt;when<br>
&gt;&gt;&gt;&gt; accessed.<br>
&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt; What I don&#39;t understand is:<br>
&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;    1. Why doesn&#39;t gluster just heal them properly instead of<br>
&gt;getting<br>
&gt;&gt;&gt;&gt;    stuck? Or maybe this was fixed in v6 or v7, which I haven&#39;t<br>
&gt;upgraded to due<br>
&gt;&gt;&gt;&gt;    to waiting for another unrelated issue to be fixed?<br>
&gt;&gt;&gt;&gt;    2. Why does heal info show 0 &quot;heal pending&quot; files on the server<br>
&gt;that<br>
&gt;&gt;&gt;&gt;    was rebooted, but all other servers show the same number of<br>
&gt;&quot;heal pending&quot;<br>
&gt;&gt;&gt;&gt;    entries &gt;0?<br>
&gt;&gt;&gt;&gt;    3. Why are there these insane load spikes upon going down and<br>
&gt;&gt;&gt;&gt;    especially coming back online? Is it related to the issue here?<br>
&gt;I&#39;m pretty<br>
&gt;&gt;&gt;&gt;    sure that it didn&#39;t happen in previous versions of gluster, when<br>
&gt;this issue<br>
&gt;&gt;&gt;&gt;    didn&#39;t manifest - I could easily bring down one of the servers<br>
&gt;without it<br>
&gt;&gt;&gt;&gt;    creating havoc when it comes back online.<br>
&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt; Here&#39;s the volume info:<br>
&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt; Volume Name: SNIP_data1<br>
&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt; Type: Replicate<br>
&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt; Volume ID: 11ecee7e-d4f8-497a-9994-ceb144d6841e<br>
&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt; Status: Started<br>
&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt; Snapshot Count: 0<br>
&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt; Number of Bricks: 1 x 4 = 4<br>
&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt; Transport-type: tcp<br>
&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt; Bricks:<br>
&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt; Brick1: SNIP:/mnt/SNIP_block1/SNIP_data1<br>
&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt; Brick2: SNIP:/mnt/SNIP_block1/SNIP_data1<br>
&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt; Brick3: SNIP:/mnt/SNIP_block1/SNIP_data1<br>
&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt; Brick4: SNIP:/mnt/SNIP_block1/SNIP_data1<br>
&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt; Options Reconfigured:<br>
&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt; performance.client-io-threads: on<br>
&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt; nfs.disable: on<br>
&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt; transport.address-family: inet<br>
&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt; cluster.self-heal-daemon: enable<br>
&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt; performance.cache-size: 1GB<br>
&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt; cluster.lookup-optimize: on<br>
&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt; performance.read-ahead: off<br>
&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt; client.event-threads: 4<br>
&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt; server.event-threads: 4<br>
&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt; performance.io-thread-count: 32<br>
&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt; cluster.readdir-optimize: on<br>
&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt; features.cache-invalidation: on<br>
&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt; features.cache-invalidation-timeout: 600<br>
&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt; performance.stat-prefetch: on<br>
&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt; performance.cache-invalidation: on<br>
&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt; performance.md-cache-timeout: 600<br>
&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt; network.inode-lru-limit: 500000<br>
&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt; performance.parallel-readdir: on<br>
&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt; performance.readdir-ahead: on<br>
&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt; performance.rda-cache-limit: 256MB<br>
&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt; network.remote-dio: enable<br>
&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt; network.ping-timeout: 5<br>
&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt; cluster.quorum-type: fixed<br>
&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt; cluster.quorum-count: 1<br>
&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt; cluster.granular-entry-heal: enable<br>
&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt; cluster.data-self-heal-algorithm: full<br>
&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt; Appreciate any insight. Thank you.<br>
&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt; Sincerely,<br>
&gt;&gt;&gt;&gt; Artem<br>
&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt; --<br>
&gt;&gt;&gt;&gt; Founder, Android Police &lt;<a href="http://www.androidpolice.com" rel="noreferrer" target="_blank">http://www.androidpolice.com</a>&gt;, APK Mirror<br>
&gt;&gt;&gt;&gt; &lt;<a href="http://www.apkmirror.com/" rel="noreferrer" target="_blank">http://www.apkmirror.com/</a>&gt;, Illogical Robot LLC<br>
&gt;&gt;&gt;&gt; <a href="http://beerpla.net" rel="noreferrer" target="_blank">beerpla.net</a> | @ArtemR &lt;<a href="http://twitter.com/ArtemR" rel="noreferrer" target="_blank">http://twitter.com/ArtemR</a>&gt;<br>
&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt; ________<br>
&gt;&gt;&gt;<br>
&gt;&gt;&gt;<br>
&gt;&gt;&gt;<br>
&gt;&gt;&gt; Community Meeting Calendar:<br>
&gt;&gt;&gt;<br>
&gt;&gt;&gt; Schedule -<br>
&gt;&gt;&gt; Every 2nd and 4th Tuesday at 14:30 IST / 09:00 UTC<br>
&gt;&gt;&gt; Bridge: <a href="https://bluejeans.com/441850968" rel="noreferrer" target="_blank">https://bluejeans.com/441850968</a><br>
&gt;&gt;&gt;<br>
&gt;&gt;&gt; Gluster-users mailing list<br>
&gt;&gt;&gt; <a href="mailto:Gluster-users@gluster.org" target="_blank">Gluster-users@gluster.org</a><br>
&gt;&gt;&gt; <a href="https://lists.gluster.org/mailman/listinfo/gluster-users" rel="noreferrer" target="_blank">https://lists.gluster.org/mailman/listinfo/gluster-users</a><br>
&gt;&gt;&gt;<br>
&gt;&gt;<br>
&gt;&gt;<br>
&gt;&gt; --<br>
&gt;&gt; Regards,<br>
&gt;&gt; Hari Gowtham.<br>
&gt;&gt;<br>
<br>
Hi Hari,<br>
<br>
I can confirm that I have  observed what Artem has described on v7.X .<br>
When one of my Gluster  nodes  was down for some time (more  data for heal) and powered up - the node  is barely responsive over ssh (separate network than the gluster one) and the system is seriously  loaded untill the heal is over.<br>
I&#39;m using the defaults for healing options.<br>
Does  the healing process require  some checksumming  on blamed entries ?<br>
<br>
<br>
@Artem, Gluster has 2 kinds  of healing.<br>
A) FUSE clients can cause a healing of a file which is not the same on all bricks<br>
This is why md5sum causes a heal.<br>
Usually even a simple &#39;stat&#39; will trigger that, but I have noticed that Gluster with sharding might require reading the file with an offset that matches the shard in order this type of heal to work.<br>
<br>
B) There is a heal daemon that runs every 15min (or somewhere there)  which crawls over the entries blamed and  triggers healing .<br>
<br>
Also, as far as I know, each file that is being healed  is  also locked  for the duration of the heal. That was the reason why oVirt uses  sharding , so instead of the whole  disk being locked - only a small piece (shard ) is locked  untill healed.<br>
<br>
@Artem what is the average size  of the files for your apaches ?<br>
<br>
Best Regards,<br>
Strahil Nikolov<br>
<br>
</blockquote></div>