-
Notifications
You must be signed in to change notification settings - Fork 37
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Fix Messaging Pattern Performance and throughput by reducing contention and serialization points #24
Comments
Reported by narliss |
@therice said: This UG thread indicates it has been an issue for some time => https://forums.oracle.com/thread/2180345 Any plans for a resolution that would be back-ported and available soon? Under high volumes of messages, it makes the pattern unusable as performance degrades to a point where requests time out. I collected some timings via a test case using a auto-commit Queue for only the getMessage() method. The numbers in each line's prefix is the QUEUE_SIZE_BEFORE => QUEUE_SIZE_AFTER, with the statistics being across all invocations of getMessage() for that range. As the abstract indicates, it appears this is due to serialization of the Queue object when there are large numbers of messages being tracked for delivery. Receiving [ 50000 ] messages from Queue [ CoherenceProviderSmokeTestQueue ] {size=1000, median=78.0, max=198.0, min=70.0, mean=88.11800000000001, stddev=23.363517071064702} 49000 => 48000 : Snapshot {size=1000, median=76.0, max=202.0, min=51.0, mean=85.803, stddev=22.848155926228024} 48000 => 47000 : Snapshot {size=1000, median=74.0, max=189.0, min=68.0, mean=83.49, stddev=22.176512297872684} 47000 => 46000 : Snapshot {size=1000, median=73.0, max=186.0, min=67.0, mean=81.93100000000001, stddev=22.623174999257877} 46000 => 45000 : Snapshot {size=1000, median=71.0, max=200.0, min=64.0, mean=80.55199999999999, stddev=22.414720960023395} 45000 => 44000 : Snapshot {size=1000, median=70.0, max=196.0, min=62.0, mean=79.555, stddev=22.381597595143056} 44000 => 43000 : Snapshot {size=1000, median=68.0, max=184.0, min=57.0, mean=76.64, stddev=23.42330145498386} 43000 => 42000 : Snapshot {size=1000, median=61.0, max=172.0, min=51.0, mean=70.20599999999999, stddev=21.80112044948278} 42000 => 41000 : Snapshot {size=1000, median=60.0, max=210.0, min=45.0, mean=67.977, stddev=21.274752315505037} 41000 => 40000 : Snapshot {size=1000, median=59.0, max=244.0, min=50.0, mean=67.26599999999999, stddev=21.843130873717897} 40000 => 39000 : Snapshot {size=1000, median=57.0, max=188.0, min=48.0, mean=64.43599999999999, stddev=19.975057118989817} 39000 => 38000 : Snapshot {size=1000, median=55.0, max=175.0, min=46.0, mean=62.61600000000001, stddev=19.64389030783945} 38000 => 37000 : Snapshot {size=1000, median=54.0, max=173.0, min=47.0, mean=60.36199999999999, stddev=18.25717065375361} 37000 => 36000 : Snapshot {size=1000, median=53.0, max=160.0, min=46.0, mean=58.911, stddev=18.04396474347216} 36000 => 35000 : Snapshot {size=1000, median=51.0, max=175.0, min=47.0, mean=57.267, stddev=17.92537391604513} 35000 => 34000 : Snapshot {size=1000, median=50.0, max=160.0, min=43.0, mean=55.09499999999999, stddev=16.485683266178256} 34000 => 33000 : Snapshot {size=1000, median=48.0, max=161.0, min=37.0, mean=54.340999999999994, stddev=18.304036624656263} 33000 => 32000 : Snapshot {size=1000, median=47.0, max=139.0, min=41.0, mean=51.53799999999999, stddev=14.555494440877554} 32000 => 31000 : Snapshot {size=1000, median=45.0, max=151.0, min=33.0, mean=50.489999999999995, stddev=15.691211365414489} 31000 => 30000 : Snapshot {size=1000, median=44.0, max=150.0, min=37.0, mean=48.375, stddev=14.491804145357037} 30000 => 29000 : Snapshot {size=1000, median=43.0, max=157.0, min=38.0, mean=46.743, stddev=13.60419145061647} 29000 => 28000 : Snapshot {size=1000, median=41.0, max=140.0, min=31.0, mean=45.505, stddev=14.777020516170905} 28000 => 27000 : Snapshot {size=1000, median=40.0, max=134.0, min=33.0, mean=43.60999999999999, stddev=13.331452570055136} 27000 => 26000 : Snapshot {size=1000, median=38.0, max=135.0, min=32.0, mean=41.697, stddev=12.239076190055702} 26000 => 25000 : Snapshot {size=1000, median=40.0, max=137.0, min=32.0, mean=43.365, stddev=11.703022504282185} 25000 => 24000 : Snapshot {size=1000, median=39.0, max=123.0, min=33.0, mean=41.849000000000004, stddev=11.014877508466745} 24000 => 23000 : Snapshot {size=1000, median=37.0, max=113.0, min=26.0, mean=40.132999999999996, stddev=10.882266985087918} 23000 => 22000 : Snapshot {size=1000, median=36.0, max=152.0, min=29.0, mean=38.351, stddev=11.041272965954054} 22000 => 21000 : Snapshot {size=1000, median=34.0, max=114.0, min=30.0, mean=36.592000000000006, stddev=9.63038318449895} 21000 => 20000 : Snapshot {size=1000, median=33.0, max=116.0, min=22.0, mean=34.745999999999995, stddev=9.500934256785056} 20000 => 19000 : Snapshot {size=1000, median=31.0, max=116.0, min=25.0, mean=32.769999999999996, stddev=9.081937105132441} 19000 => 18000 : Snapshot {size=1000, median=27.0, max=111.0, min=22.0, mean=28.898000000000003, stddev=8.157336461010907} 18000 => 17000 : Snapshot {size=1000, median=26.0, max=116.0, min=12.0, mean=27.700999999999997, stddev=9.66918259689471} 17000 => 16000 : Snapshot {size=1000, median=24.0, max=95.0, min=20.0, mean=25.713000000000005, stddev=7.386283787412215} 16000 => 15000 : Snapshot {size=1000, median=23.0, max=85.0, min=12.0, mean=24.453999999999994, stddev=7.6051115522207615} 15000 => 14000 : Snapshot {size=1000, median=23.0, max=107.0, min=17.0, mean=24.328999999999997, stddev=7.220588334470801} 14000 => 13000 : Snapshot {size=1000, median=22.0, max=96.0, min=11.0, mean=23.030999999999995, stddev=6.432061132359573} 13000 => 12000 : Snapshot {size=1000, median=20.0, max=90.0, min=15.0, mean=21.331000000000007, stddev=5.593453827978393} 12000 => 11000 : Snapshot {size=1000, median=19.0, max=93.0, min=10.0, mean=19.792, stddev=6.111144089455122} 11000 => 10000 : Snapshot {size=1000, median=17.0, max=97.0, min=9.0, mean=17.995999999999995, stddev=5.046131929255055} 10000 => 9000 : Snapshot {size=1000, median=16.0, max=69.0, min=10.0, mean=16.378000000000007, stddev=4.5254387185769644} 9000 => 8000 : Snapshot {size=1000, median=14.0, max=87.0, min=8.0, mean=14.708999999999996, stddev=4.505620891688481} 8000 => 7000 : Snapshot {size=1000, median=12.0, max=69.0, min=6.0, mean=12.720000000000002, stddev=4.374097933601033} 7000 => 6000 : Snapshot {size=1000, median=10.0, max=38.0, min=6.0, mean=10.879000000000003, stddev=2.827782763112343} 6000 => 5000 : Snapshot {size=1000, median=9.0, max=50.0, min=5.0, mean=9.451000000000006, stddev=3.08790125070965} 5000 => 4000 : Snapshot {size=1000, median=8.0, max=45.0, min=4.0, mean=8.082000000000006, stddev=2.878812874009606} 4000 => 3000 : Snapshot {size=1000, median=6.0, max=43.0, min=3.0, mean=6.316999999999995, stddev=2.42825192420545} 3000 => 2000 : Snapshot {size=1000, median=5.0, max=21.0, min=2.0, mean=4.685999999999994, stddev=1.4606633895383003} 2000 => 1000 : Snapshot {size=1000, median=3.0, max=21.0, min=1.0, mean=3.0570000000000066, stddev=1.4070290440252893} 1000 => 0 : Snapshot {size=1000, median=1.0, max=16.0, min=1.0, mean=1.5549999999999953, stddev=0.9380057861521299} Receiving [ 100000 ] messages from Queue [ CoherenceProviderSmokeTestQueue ] {size=1000, median=181.0, max=298.0, min=84.0, mean=191.67199999999997, stddev=39.7766086361645} 99000 => 98000 : Snapshot {size=1000, median=162.0, max=290.0, min=120.0, mean=176.967, stddev=38.44145752513368} 98000 => 97000 : Snapshot {size=1000, median=164.0, max=317.0, min=133.0, mean=177.844, stddev=39.89788848429831} 97000 => 96000 : Snapshot {size=1000, median=164.0, max=272.0, min=129.0, mean=173.26799999999997, stddev=35.08080442120503} 96000 => 95000 : Snapshot {size=1000, median=156.0, max=281.0, min=130.0, mean=169.432, stddev=34.58857825562862} 95000 => 94000 : Snapshot {size=1000, median=158.0, max=317.0, min=125.0, mean=169.86399999999998, stddev=35.94606548182457} 94000 => 93000 : Snapshot {size=1000, median=154.5, max=299.0, min=127.0, mean=167.779, stddev=36.31168816920659} 93000 => 92000 : Snapshot {size=1000, median=152.0, max=293.0, min=127.0, mean=166.075, stddev=36.24178309412818} 92000 => 91000 : Snapshot {size=1000, median=147.0, max=269.0, min=123.0, mean=161.73799999999997, stddev=34.14051743794946} 91000 => 90000 : Snapshot {size=1000, median=144.0, max=269.0, min=121.0, mean=159.653, stddev=34.58720667914461} 90000 => 89000 : Snapshot {size=1000, median=139.0, max=256.0, min=121.0, mean=157.068, stddev=34.110568844669025} 89000 => 88000 : Snapshot {size=1000, median=139.0, max=278.0, min=119.0, mean=155.454, stddev=33.97620146906161} 88000 => 87000 : Snapshot {size=1000, median=133.0, max=271.0, min=117.0, mean=150.72400000000002, stddev=32.22465286472847} 87000 => 86000 : Snapshot {size=1000, median=134.0, max=262.0, min=115.0, mean=149.856, stddev=32.593060175006165} 86000 => 85000 : Snapshot {size=1000, median=131.5, max=262.0, min=115.0, mean=151.403, stddev=34.86278825632005} 85000 => 84000 : Snapshot {size=1000, median=129.0, max=258.0, min=113.0, mean=147.725, stddev=33.08616129243573} 84000 => 83000 : Snapshot {size=1000, median=125.0, max=243.0, min=113.0, mean=142.908, stddev=30.969834785911658} 83000 => 82000 : Snapshot {size=1000, median=122.0, max=249.0, min=112.0, mean=141.87199999999999, stddev=32.449477416201674} 82000 => 81000 : Snapshot {size=1000, median=121.0, max=256.0, min=108.0, mean=140.38799999999998, stddev=32.11256253668761} 81000 => 80000 : Snapshot {size=1000, median=119.0, max=259.0, min=110.0, mean=139.402, stddev=32.33580059315062} 80000 => 79000 : Snapshot {size=1000, median=118.0, max=295.0, min=107.0, mean=136.94, stddev=32.162568784704234} 79000 => 78000 : Snapshot {size=1000, median=116.0, max=267.0, min=105.0, mean=134.702, stddev=31.069800909058472} 78000 => 77000 : Snapshot {size=1000, median=114.0, max=253.0, min=99.0, mean=133.02100000000002, stddev=31.245300891939397} 77000 => 76000 : Snapshot {size=1000, median=113.0, max=254.0, min=103.0, mean=131.137, stddev=30.7912378986512} 76000 => 75000 : Snapshot {size=1000, median=111.0, max=255.0, min=98.0, mean=129.866, stddev=34.077842410330824} 75000 => 74000 : Snapshot {size=1000, median=109.0, max=229.0, min=97.0, mean=127.812, stddev=33.67721500971853} 74000 => 73000 : Snapshot {size=1000, median=107.0, max=241.0, min=99.0, mean=126.298, stddev=33.72124431746724} 73000 => 72000 : Snapshot {size=1000, median=105.0, max=236.0, min=90.0, mean=123.848, stddev=33.02143714787884} 72000 => 71000 : Snapshot {size=1000, median=103.5, max=241.0, min=97.0, mean=121.053, stddev=31.029744375937717} 71000 => 70000 : Snapshot {size=1000, median=102.0, max=228.0, min=93.0, mean=118.013, stddev=28.028564562450065} 70000 => 69000 : Snapshot {size=1000, median=101.0, max=224.0, min=94.0, mean=116.29400000000001, stddev=28.19614488873583} 69000 => 68000 : Snapshot {size=1000, median=99.0, max=231.0, min=91.0, mean=114.71499999999999, stddev=28.588478030074917} 68000 => 67000 : Snapshot {size=1000, median=97.0, max=245.0, min=90.0, mean=113.26, stddev=29.388093848701043} 67000 => 66000 : Snapshot {size=1000, median=96.0, max=226.0, min=89.0, mean=111.236, stddev=28.876948976340678} 66000 => 65000 : Snapshot {size=1000, median=94.0, max=229.0, min=86.0, mean=108.71400000000003, stddev=26.725464532061125} 65000 => 64000 : Snapshot {size=1000, median=93.0, max=222.0, min=82.0, mean=107.33099999999999, stddev=27.175060679286776} 64000 => 63000 : Snapshot {size=1000, median=91.0, max=218.0, min=83.0, mean=104.889, stddev=26.167373013170604} 63000 => 62000 : Snapshot {size=1000, median=90.0, max=244.0, min=81.0, mean=103.94599999999997, stddev=28.009884641633747} 62000 => 61000 : Snapshot {size=1000, median=88.0, max=219.0, min=82.0, mean=101.543, stddev=26.433896835349454} 61000 => 60000 : Snapshot {size=1000, median=87.0, max=205.0, min=81.0, mean=98.898, stddev=23.679026421968675} 60000 => 59000 : Snapshot {size=1000, median=85.0, max=201.0, min=71.0, mean=98.091, stddev=25.38284869765434} 59000 => 58000 : Snapshot {size=1000, median=84.0, max=218.0, min=77.0, mean=96.375, stddev=25.448851035341832} 58000 => 57000 : Snapshot {size=1000, median=82.0, max=208.0, min=78.0, mean=94.471, stddev=24.001317093489334} 57000 => 56000 : Snapshot {size=1000, median=81.0, max=205.0, min=68.0, mean=92.66199999999999, stddev=24.265872920391494} 56000 => 55000 : Snapshot {size=1000, median=80.0, max=200.0, min=70.0, mean=92.113, stddev=26.329669243696994} 55000 => 54000 : Snapshot {size=1000, median=79.0, max=198.0, min=71.0, mean=90.142, stddev=24.058317452362346} 54000 => 53000 : Snapshot {size=1000, median=78.0, max=197.0, min=64.0, mean=88.59200000000001, stddev=23.68168824975024} 53000 => 52000 : Snapshot {size=1000, median=76.0, max=209.0, min=68.0, mean=86.655, stddev=24.187910824005215} 52000 => 51000 : Snapshot {size=1000, median=75.0, max=184.0, min=69.0, mean=84.89500000000001, stddev=22.309363116922047} 51000 => 50000 : Snapshot {size=1000, median=73.0, max=195.0, min=63.0, mean=84.346, stddev=24.85510128846911} 50000 => 49000 : Snapshot {size=1000, median=71.0, max=189.0, min=56.0, mean=81.30400000000002, stddev=23.581638570669217} 49000 => 48000 : Snapshot {size=1000, median=69.0, max=184.0, min=64.0, mean=79.03999999999999, stddev=22.99075846889305} 48000 => 47000 : Snapshot {size=1000, median=68.0, max=173.0, min=58.0, mean=77.07, stddev=21.817862386565732} 47000 => 46000 : Snapshot {size=1000, median=67.0, max=2874.0, min=58.0, mean=79.279, stddev=91.4995810500371} 46000 => 45000 : Snapshot {size=1000, median=65.0, max=178.0, min=59.0, mean=74.04400000000001, stddev=21.79332496460817} 45000 => 44000 : Snapshot {size=1000, median=64.0, max=168.0, min=57.0, mean=73.62100000000001, stddev=22.886790167346838} 44000 => 43000 : Snapshot {size=1000, median=62.0, max=174.0, min=55.0, mean=71.28500000000001, stddev=21.670657405634707} 43000 => 42000 : Snapshot {size=1000, median=61.0, max=170.0, min=50.0, mean=69.298, stddev=21.188727148136085} 42000 => 41000 : Snapshot {size=1000, median=59.0, max=160.0, min=54.0, mean=66.64599999999999, stddev=19.53377209481695} 41000 => 40000 : Snapshot {size=1000, median=58.0, max=175.0, min=49.0, mean=64.916, stddev=19.840377632106353} 40000 => 39000 : Snapshot {size=1000, median=56.0, max=173.0, min=52.0, mean=62.87, stddev=18.07910268663667} 39000 => 38000 : Snapshot {size=1000, median=55.0, max=157.0, min=30.0, mean=61.71900000000001, stddev=18.562343591249462} 38000 => 37000 : Snapshot {size=1000, median=54.0, max=159.0, min=50.0, mean=60.268, stddev=18.492272443919397} 37000 => 36000 : Snapshot {size=1000, median=52.0, max=164.0, min=47.0, mean=58.221999999999994, stddev=17.100267107128285} 36000 => 35000 : Snapshot {size=1000, median=51.0, max=163.0, min=45.0, mean=57.07500000000001, stddev=17.403915400600876} 35000 => 34000 : Snapshot {size=1000, median=50.0, max=154.0, min=45.0, mean=55.61600000000001, stddev=17.464694659786026} 34000 => 33000 : Snapshot {size=1000, median=48.0, max=136.0, min=41.0, mean=53.239999999999995, stddev=14.814312804307315} 33000 => 32000 : Snapshot {size=1000, median=51.0, max=154.0, min=42.0, mean=55.32800000000002, stddev=15.519254597539888} 32000 => 31000 : Snapshot {size=1000, median=45.0, max=151.0, min=41.0, mean=49.642, stddev=13.566277303662948} 31000 => 30000 : Snapshot {size=1000, median=44.0, max=150.0, min=36.0, mean=48.376, stddev=14.69927524378978} 30000 => 29000 : Snapshot {size=1000, median=42.0, max=149.0, min=34.0, mean=46.94899999999999, stddev=15.123793443714058} 29000 => 28000 : Snapshot {size=1000, median=41.0, max=148.0, min=35.0, mean=45.23100000000001, stddev=14.006920890503757} 28000 => 27000 : Snapshot {size=1000, median=40.0, max=148.0, min=34.0, mean=43.496999999999986, stddev=13.796896221445806} 27000 => 26000 : Snapshot {size=1000, median=38.0, max=134.0, min=32.0, mean=41.885000000000005, stddev=12.436335370093442} 26000 => 25000 : Snapshot {size=1000, median=37.0, max=147.0, min=32.0, mean=40.63, stddev=13.711203342416656} 25000 => 24000 : Snapshot {size=1000, median=39.0, max=133.0, min=34.0, mean=41.864999999999995, stddev=12.172137689655683} 24000 => 23000 : Snapshot {size=1000, median=37.0, max=132.0, min=30.0, mean=40.669999999999995, stddev=13.210511633453864} 23000 => 22000 : Snapshot {size=1000, median=36.0, max=124.0, min=26.0, mean=38.56099999999999, stddev=11.187467918990311} 22000 => 21000 : Snapshot {size=1000, median=34.0, max=120.0, min=24.0, mean=37.007, stddev=11.303571193287661} 21000 => 20000 : Snapshot {size=1000, median=33.0, max=128.0, min=24.0, mean=35.30800000000001, stddev=10.732209293352232} 20000 => 19000 : Snapshot {size=1000, median=31.0, max=111.0, min=25.0, mean=33.44399999999999, stddev=9.915199199974579} 19000 => 18000 : Snapshot {size=1000, median=29.0, max=105.0, min=24.0, mean=31.580000000000013, stddev=9.01337011560279} 18000 => 17000 : Snapshot {size=1000, median=28.0, max=98.0, min=20.0, mean=28.800000000000004, stddev=7.423281289639059} 17000 => 16000 : Snapshot {size=1000, median=24.0, max=108.0, min=14.0, mean=25.906999999999993, stddev=8.290058870483135} 16000 => 15000 : Snapshot {size=1000, median=23.0, max=88.0, min=16.0, mean=24.333999999999996, stddev=7.487490000427813} 15000 => 14000 : Snapshot {size=1000, median=21.0, max=96.0, min=15.0, mean=22.915000000000006, stddev=7.130260557343979} 14000 => 13000 : Snapshot {size=1000, median=21.0, max=97.0, min=11.0, mean=22.265, stddev=7.283668500613395} 13000 => 12000 : Snapshot {size=1000, median=20.0, max=99.0, min=13.0, mean=21.244999999999997, stddev=5.764043650008142} 12000 => 11000 : Snapshot {size=1000, median=19.0, max=87.0, min=10.0, mean=19.677000000000003, stddev=5.623548283361263} 11000 => 10000 : Snapshot {size=1000, median=17.0, max=87.0, min=11.0, mean=17.921000000000006, stddev=4.608687340121788} 10000 => 9000 : Snapshot {size=1000, median=16.0, max=78.0, min=9.0, mean=16.274, stddev=4.204354956542137} 9000 => 8000 : Snapshot {size=1000, median=14.0, max=64.0, min=8.0, mean=14.613, stddev=3.9908843829605445} 8000 => 7000 : Snapshot {size=1000, median=12.0, max=66.0, min=6.0, mean=12.519999999999994, stddev=3.7634776156852245} 7000 => 6000 : Snapshot {size=1000, median=10.0, max=80.0, min=6.0, mean=10.869, stddev=3.4617658532637123} 6000 => 5000 : Snapshot {size=1000, median=9.0, max=62.0, min=4.0, mean=9.381, stddev=2.861472877213261} 5000 => 4000 : Snapshot {size=1000, median=8.0, max=39.0, min=4.0, mean=8.041000000000004, stddev=2.601939486054422} 4000 => 3000 : Snapshot {size=1000, median=6.0, max=33.0, min=3.0, mean=6.262999999999996, stddev=1.9358663638223068} 3000 => 2000 : Snapshot {size=1000, median=5.0, max=33.0, min=2.0, mean=4.683000000000006, stddev=1.7797973701179062} 2000 => 1000 : Snapshot {size=1000, median=3.0, max=29.0, min=2.0, mean=3.0350000000000033, stddev=1.5113103781351653} 1000 => 0 : Snapshot {size=1000, median=1.0, max=15.0, min=0.0, mean=1.5, stddev=0.9278258785250931} |
@brianoliver said: This is the highest priority issue we're working on next for the Incubator. – Brian |
This issue was imported from JIRA COHINC-24 |
Fix Messaging Pattern Performance and throughput by reducing contention and serialization points
The text was updated successfully, but these errors were encountered: