[Ceilometer] Statistics request works too slow and block other statistics requests.

Bug #1506877 reported by Ilya Tyaptin
10
This bug affects 2 people
Affects Status Importance Assigned to Milestone
Mirantis OpenStack
Status tracked in 10.0.x
10.0.x
Invalid
High
MOS Ceilometer
5.1.x
Opinion
High
MOS Ceilometer
6.0.x
Fix Released
High
MOS Ceilometer
6.1.x
Fix Released
High
MOS Ceilometer
7.0.x
Fix Released
High
MOS Ceilometer
8.0.x
Fix Released
High
MOS Ceilometer
9.x
Invalid
High
MOS Ceilometer

Bug Description

In all released MOSes Ceilometer uses a javascript map-reduce mechanism for getting statistics requests. It works slow and only one Map-Reduce job can work on replicaset at a certain time.
So, this solution is not acceptable for production environments/
We can improve situation with using aggregation pipeline instead of Map-Reduce. It doesn't block database and works more better than MR, but it needs a MongoDB >= 2.6.

So this behavior have been already implemented in Liberty cycle and
we need to have it in MOS.
We have already backported it to MOS 7.0 in CR: https://review.fuel-infra.org/#/c/11049/

Ilya Tyaptin (ityaptin)
Changed in mos:
milestone: none → 7.0-mu-1
importance: Undecided → Medium
description: updated
Revision history for this message
Vitaly Sedelnik (vsedelnik) wrote :

Won't Fix for 7.0.x series because of medium importance

tags: added: customer-found
Revision history for this message
Nadya Privalova (nprivalova) wrote :

Corresponding change for 7.0 is here https://review.fuel-infra.org/#/c/11049/

Revision history for this message
Roman Podoliaka (rpodolyaka) wrote :

Guys, do we really want this to be High? Sounds like an enhancement request to me.

Moreover, we don't really want to upgrade MongoDB in 7.0.

Revision history for this message
Nadya Privalova (nprivalova) wrote :

Invalid in 8.0 because this bug will be fixed automatically from upstream

description: updated
Revision history for this message
Nadya Privalova (nprivalova) wrote :
tags: added: support
Revision history for this message
Oleksandr Bryndzii (obryndzii) wrote :

Please, pay attention, that this bug is customer-found for Fuel-6.1 too

Revision history for this message
Fuel Devops McRobotson (fuel-devops-robot) wrote : Fix merged to openstack/ceilometer (openstack-ci/fuel-6.1/2014.2)

Reviewed: https://review.fuel-infra.org/10641
Submitter: Vitaly Sedelnik <email address hidden>
Branch: openstack-ci/fuel-6.1/2014.2

Commit: 2d7821db1699da1a688c605fdd91aea26e37c136
Author: Ilya Tyaptin <email address hidden>
Date: Fri Oct 30 10:54:10 2015

[MongoDB] Use a aggregate pipeline in statistics

Currently, we use a native mapreduce jobs for highload requests
in MongoDb backend, but this approach have insufficient performance.
For example, at test environment mapreduce job processes a 10k samples/sec.
It's not good result for big collections.
Aggregation framework has a better performance and enough syntax
for our needs. At test environment it shows a improving "statistics" request
performance up to 10 times.

Closes-Bug: #1506877
Implements: blueprint mongodb-aggregation-pipeline
Change-Id: I60040b4472529d460f03cc4d1b55d883ea339124
(cherry-picked from c41a8856b98a435bc9af4ea80d42f5d8139b7fe9)

Revision history for this message
Fuel Devops McRobotson (fuel-devops-robot) wrote : Fix merged to openstack/ceilometer (openstack-ci/fuel-6.0-updates/2014.2)

Reviewed: https://review.fuel-infra.org/10685
Submitter: Vitaly Sedelnik <email address hidden>
Branch: openstack-ci/fuel-6.0-updates/2014.2

Commit: 4c3af08f907608e275c069a864baf52bb36d852a
Author: Ilya Tyaptin <email address hidden>
Date: Fri Oct 30 13:14:50 2015

[MongoDB] Use a aggregate pipeline in statistics

Currently, we use a native mapreduce jobs for highload requests
in MongoDb backend, but this approach have insufficient performance.
For example, at test environment mapreduce job processes a 10k samples/sec.
It's not good result for big collections.
Aggregation framework has a better performance and enough syntax
for our needs. At test environment it shows a improving "statistics" request
performance up to 10 times.

Closes-Bug: #1506877
Implements: blueprint mongodb-aggregation-pipeline
Change-Id: I60040b4472529d460f03cc4d1b55d883ea339124
(cherry-picked from c41a8856b98a435bc9af4ea80d42f5d8139b7fe9)

Revision history for this message
Fuel Devops McRobotson (fuel-devops-robot) wrote : Fix proposed to openstack/ceilometer (openstack-ci/fuel-6.0-updates/2014.2)

Fix proposed to branch: openstack-ci/fuel-6.0-updates/2014.2
Change author: Ilya Tyaptin <email address hidden>
Review: https://review.fuel-infra.org/14259

Revision history for this message
Fuel Devops McRobotson (fuel-devops-robot) wrote : Fix merged to openstack/ceilometer (openstack-ci/fuel-6.0-updates/2014.2)

Reviewed: https://review.fuel-infra.org/14259
Submitter: Vitaly Sedelnik <email address hidden>
Branch: openstack-ci/fuel-6.0-updates/2014.2

Commit: e7966b4ec53c15cfd8945f0fe48a3e0a379db83e
Author: Ilya Tyaptin <email address hidden>
Date: Fri Nov 27 13:14:24 2015

Remove the Prefection using in MongoDB storage

In previous patchset we renamed Prefection to the ProxyCursor
but continue using this class. It caused error in the MongoDB
storage calls. In this patchset these calls are removed.

Change-Id: I89f8270cd9d85618360296d286e354be49387d7a
Closes-bug: #1506877

Revision history for this message
Vadim Rovachev (vrovachev) wrote :

Verified on Ubuntu 6.0.
Packages:
ceilometer-agent-central,ceilometer-agent-notification,ceilometer-alarm-evaluator,ceilometer-alarm-notifier,ceilometer-api,ceilometer-collector,ceilometer-common,python-ceilometer
Version:
2014.2-fuel6.0~mira25

tags: added: on-verification
Revision history for this message
Vitaly Gusev (vgusev) wrote :

Verified on Ubuntu 6.1.
Packages:
ceilometer-agent-central,ceilometer-agent-notification,ceilometer-alarm-evaluator,ceilometer-alarm-notifier,ceilometer-api,ceilometer-collector,ceilometer-common,python-ceilometer
Version:
2014.2.2-1~u14.04+mos13

tags: removed: on-verification
Revision history for this message
Vitaly Gusev (vgusev) wrote :

Verified on ISO:
VERSION:
  feature_groups:
    - mirantis
  production: "docker"
  release: "8.0"
  api: "1.0"
  build_number: "466"
  build_id: "466"
  fuel-nailgun_sha: "f81311bbd6fee2665e3f96dcac55f72889b2f38c"
  python-fuelclient_sha: "4f234669cfe88a9406f4e438b1e1f74f1ef484a5"
  fuel-agent_sha: "6823f1d4005a634b8436109ab741a2194e2d32e0"
  fuel-nailgun-agent_sha: "b2bb466fd5bd92da614cdbd819d6999c510ebfb1"
  astute_sha: "b81577a5b7857c4be8748492bae1dec2fa89b446"
  fuel-library_sha: "fe03d887361eb80232e9914eae5b8d54304df781"
  fuel-ostf_sha: "ab5fd151fc6c1aa0b35bc2023631b1f4836ecd61"
  fuel-mirror_sha: "b62f3cce5321fd570c6589bc2684eab994c3f3f2"
  fuelmenu_sha: "fac143f4dfa75785758e72afbdc029693e94ff2b"
  shotgun_sha: "63645dea384a37dde5c01d4f8905566978e5d906"
  network-checker_sha: "9f0ba4577915ce1e77f5dc9c639a5ef66ca45896"
  fuel-upgrade_sha: "616a7490ec7199f69759e97e42f9b97dfc87e85b"
  fuelmain_sha: "727f7076f04cb0caccc9f305b149a2b5b5c2af3a"

Revision history for this message
Roman Podoliaka (rpodolyaka) wrote :

Release notes:

Statistics requests are now handled up to 10 time faster due to using of Mongo aggregation pipeline.

tags: added: release-notes
tags: added: release-notes-8.0-done
removed: release-notes
tags: added: 8.0 release-notes-done
removed: release-notes-8.0-done
Changed in mos:
milestone: 7.0-mu-1 → none
Changed in mos:
milestone: none → 7.0-updates
Changed in mos:
status: Fix Released → Confirmed
Revision history for this message
Vitaly Sedelnik (vsedelnik) wrote :
Changed in mos:
milestone: 7.0-updates → 7.0-mu-4
Revision history for this message
Fuel Devops McRobotson (fuel-devops-robot) wrote : Fix merged to openstack/ceilometer (openstack-ci/fuel-7.0/2015.1.0)

Reviewed: https://review.fuel-infra.org/11049
Submitter: Vitaly Sedelnik <email address hidden>
Branch: openstack-ci/fuel-7.0/2015.1.0

Commit: 2818186eb82d74e8474d8fbc0a7fe6df4121d2aa
Author: Ilya Tyaptin <email address hidden>
Date: Tue May 17 06:45:11 2016

[MongoDB] Use a aggregate pipeline in statistics

Currently, we use a native mapreduce jobs for highload requests
in MongoDb backend, but this approach have insufficient performance.
For example, at test environment mapreduce job processes a 10k samples/sec.
It's not good result for big collections.
Aggregation framework has a better performance and enough syntax
for our needs. At test environment it shows a improving "statistics" request
performance up to 10 times.

Closes-Bug: #1506877
Closes-bug: #1581507
Related-bug: #1537657
Implements: blueprint mongodb-aggregation-pipeline
Change-Id: I60040b4472529d460f03cc4d1b55d883ea339124
cherry-picked from c41a8856b98a435bc9af4ea80d42f5d8139b7fe9

Dmitry (dtsapikov)
tags: added: on-verification
Changed in mos:
status: Confirmed → Fix Committed
Changed in mos:
milestone: 7.0-mu-4 → none
Revision history for this message
Dmitry (dtsapikov) wrote :

Verified on 7.0+mu4

tags: removed: on-verification
To post a comment you must log in.
This report contains Public information  
Everyone can see this information.

Other bug subscribers

Remote bug watches

Bug watches keep track of this bug in other bug trackers.