Details

    • Sub-task
    • Status: Resolved
    • Major
    • Resolution: Fixed
    • 2.7.0
    • 2.9.0, 3.0.0-alpha4, 2.8.2
    • ipc
    • None
    • Reviewed

    Description

      Under heavy load the call queue may run dry yet clients experience high latency.

      The fcq requires producers and consumers to sync via a shared lock. Polling consumers hold the lock while scanning all sub-queues. Consumers are serialized despite the sub-queues being thread-safe blocking queues. The effect is to cause other producers/consumers to frequently park.

      The lock is unfair, so producers/consumers attempt to barge in on the lock. The outnumbered producers tend to remain blocked for an extended time. As load increases and the queues fill, the barging consumers drain the queues faster than the producers can fill it.

      Server metrics provide an illusion of healthy throughput, response time, and call queue length due to starvation on the ingress. Often as the load gets worse, the server looks better.

      Attachments

        1. HADOOP-14033.patch
          8 kB
          Daryn Sharp

        Issue Links

          Activity

            People

              daryn Daryn Sharp
              daryn Daryn Sharp
              Votes:
              0 Vote for this issue
              Watchers:
              10 Start watching this issue

              Dates

                Created:
                Updated:
                Resolved: