Were you running the "foreman-trace rails calls" utility when you
searched the problematic "puppet" query? Because the output looks like
sane output, I can see one hundred of NIC models allocated, but this
should not take 6 Gbs at all.

I've slightly enhanced the foreman-tracer, can you also try to run
this while doing the problematic query:

foreman-tracer rails objects-total all

foreman-tracer rails objects all

foreman-tracer rails calls all

We must be allocating some number of objects somewhere, this should reveal them.

LZ

On Wed, Nov 2, 2016 at 11:55 AM, Erez Zarum <erezza...@gmail.com> wrote:
> This is the problem, it's seems like running a query without any field is
> causing this problem, it became more aggressive now probably because i am
> running it under the "Classes" dashboard which now have much much more
> objects than before.
>
> Running a query without a specific field: "puppet", memory usage from 1G to
> 5G, a ruby instance takes 100% CPU for about a minute.
> Running a query with a specific field: "name = puppet", memory usage remains
> quite the same, small spike in CPU, returns immediately (less than a
> second).
>
>
> On Tuesday, November 1, 2016 at 6:22:01 PM UTC+2, Erez Zarum wrote:
>>
>> I have the "theforeman/puppet" module, when i search under the "Classes"
>> dashboard the word "puppet" it's seems to cause a very high CPU and memory
>> starts to increase up to 6GB from almost 1GB.
>>
>> On Tuesday, November 1, 2016 at 5:19:36 PM UTC+2, Erez Zarum wrote:
>>>
>>> rails objects-total
>>> OBJECT     COUNT
>>> ERB       826
>>> Nic::Managed                 104
>>> Foreman::Parameters::Caster       38
>>> IPAddr                       24
>>> ConfigReportStatusCalculator       24
>>> ActiveSupport::HashWithIndifferentAccess         18
>>> SafeRender       10
>>> Range         9
>>> ActionView::OutputBuffer         8
>>> Classification::GlobalParam         6
>>> ActionDispatch::Request         6
>>> Foreman::Parameters::Validator                   6
>>> OpenSSL::ASN1::ASN1Data         6
>>> OpenSSL::ASN1::Sequence         6
>>> Authorizer         5
>>> CertificateExtract         3
>>> OpenSSL::ASN1::ObjectId         3
>>> OpenSSL::ASN1::OctetString         3
>>> OpenSSL::X509::Certificate         3
>>> Classification::ClassParam         2
>>> ActiveModel::Name         2
>>> PuppetFactParser         1
>>> HostStatus::Global         1
>>> PuppetFactImporter         1
>>>
>>> rails objects
>>> FILENAME
>>> LINE    OBJECT                                     COUNT
>>> /usr/share/foreman/app/services/safe_render.rb
>>> 39      ERB                                        826
>>> /usr/share/foreman/app/models/concerns/interface_cloning.rb
>>> 10      Nic::Managed                               96
>>> /usr/share/foreman/app/services/classification/base.rb
>>> 151     Foreman::Parameters::Caster                38
>>> /usr/share/foreman/app/models/config_report.rb
>>> 88      ConfigReportStatusCalculator               18
>>> /usr/share/foreman/app/models/host/base.rb
>>> 390     ActiveSupport::HashWithIndifferentAccess   11
>>> /usr/share/foreman/app/models/concerns/encryptable.rb
>>> 50      Range                                      8
>>> /usr/share/foreman/app/models/host/base.rb
>>> 78      Nic::Managed                               8
>>> /usr/share/foreman/lib/net/validations.rb
>>> 31      IPAddr                                     8
>>> /usr/share/foreman/lib/net/validations.rb
>>> 18      IPAddr                                     8
>>> /usr/share/foreman/app/services/classification/base.rb
>>> 8       SafeRender                                 8
>>> /usr/share/foreman/lib/net/validations.rb
>>> 102     IPAddr                                     8
>>> /usr/share/foreman/app/models/lookup_value.rb
>>> 51      Foreman::Parameters::Validator             6
>>> /usr/share/foreman/lib/middleware/tagged_logging.rb
>>> 10      ActionDispatch::Request                    6
>>> /usr/share/foreman/app/models/host/managed.rb
>>> 934     Classification::GlobalParam                6
>>> /usr/share/foreman/app/models/host_status/configuration_status.rb
>>> 112     ConfigReportStatusCalculator               6
>>> /usr/share/foreman/app/services/certificate_extract.rb
>>> 17      OpenSSL::ASN1::ASN1Data                    6
>>> /usr/share/foreman/app/helpers/application_helper.rb
>>> 104     Authorizer                                 5
>>> /usr/share/foreman/app/services/authorizer_cache.rb
>>> 3       ActiveSupport::HashWithIndifferentAccess   5
>>> /usr/share/foreman/app/services/certificate_extract.rb
>>> 5       OpenSSL::X509::Certificate                 3
>>> /usr/share/foreman/app/services/certificate_extract.rb
>>> 16      OpenSSL::ASN1::OctetString                 3
>>> /usr/share/foreman/app/services/certificate_extract.rb
>>> 16      OpenSSL::ASN1::Sequence                    3
>>>
>>> /usr/share/foreman/app/controllers/concerns/foreman/controller/smart_proxy_auth.rb
>>> 59      CertificateExtract                         3
>>> /usr/share/foreman/app/services/certificate_extract.rb
>>> 16      OpenSSL::ASN1::ObjectId                    3
>>> /usr/share/foreman/app/services/certificate_extract.rb
>>> 17      OpenSSL::ASN1::Sequence                    3
>>> /usr/share/foreman/app/models/host/managed.rb
>>> 420     SafeRender                                 2
>>>
>>> rails calls
>>> FILENAME                                                    LINE
>>> METHOD                  CALLS
>>> /usr/share/foreman/app/models/setting.rb                    218
>>> cache                   2120
>>> /usr/share/foreman/app/models/setting.rb                    72
>>> []                      2086
>>> /usr/share/foreman/app/models/concerns/exportable.rb        55
>>> exportable_attributes   2054
>>> /usr/share/foreman/app/services/safe_render.rb              12
>>> parse                   1138
>>> /usr/share/foreman/app/services/safe_render.rb              31
>>> parse_string            826
>>> /usr/share/foreman/app/models/concerns/exportable.rb        33
>>> export_attr             810
>>> /usr/share/foreman/app/models/fact_value.rb                 7
>>> name                    509
>>> /usr/share/foreman/app/models/user.rb                       137
>>> admin?                  180
>>> /usr/share/foreman/app/models/taxonomy.rb                   100
>>> expand                  180
>>> /usr/share/foreman/app/models/lookup_keys/lookup_key.rb     92
>>> to_s                    112
>>> /usr/share/foreman/app/models/concerns/interface_cloning.rb 9
>>> setup_object_clone      104
>>> /usr/share/foreman/app/models/nic/managed.rb                45
>>> hostname                96
>>> /usr/share/foreman/app/models/concerns/taxonomix.rb         34
>>> with_taxonomy_scope     84
>>> /usr/share/foreman/app/models/concerns/taxonomix.rb         115
>>> scope_by_taxable_ids    84
>>> /usr/share/foreman/app/models/concerns/taxonomix.rb         75
>>> taxable_ids             84
>>> /usr/share/foreman/app/models/host/base.rb                  441
>>> get_interface_by_flag   74
>>> /usr/share/foreman/app/models/concerns/exportable.rb        35
>>> call                    66
>>> /usr/share/foreman/app/models/concerns/orchestration/dns.rb 12
>>> dns_ready?              64
>>> /usr/share/foreman/app/models/concerns/taxonomix.rb         131
>>> set_current_taxonomy    62
>>> /usr/share/foreman/app/models/concerns/exportable.rb        14
>>> to_export               62
>>> /usr/share/foreman/app/services/structured_fact_importer.rb 9
>>> normalize_recurse       60
>>> /usr/share/foreman/app/models/host/base.rb                  237
>>> primary_interface       54
>>> /usr/share/foreman/app/services/classification/base.rb      167
>>> update_generic_matcher  54
>>> /usr/share/foreman/app/services/classification/base.rb      72
>>> value_of_key            54
>>> /usr/share/foreman/app/services/classification/base.rb      73
>>> yield                   44
>>>
>>>
>>>
>>> On Tuesday, November 1, 2016 at 4:25:31 PM UTC+2, Lukas Zapletal wrote:
>>>>
>>>> Two or three minutes is just fine, counters do reset after 5 minutes
>>>> so not longer.
>>>>
>>>> You can also add "rails calls" output as well, that might be interesting
>>>> too.
>>>>
>>>> LZ
>>>>
>>>> On Tue, Nov 1, 2016 at 11:58 AM, Erez Zarum <erez...@gmail.com> wrote:
>>>> > No problem, for how long you think i should have it running to give
>>>> > valuable
>>>> > data to work with?
>>>> > I am running only on objects-total and objects (as you mentioned)
>>>> >
>>>> > On Monday, October 31, 2016 at 7:05:28 PM UTC+2, Lukas Zapletal wrote:
>>>> >>
>>>> >> Can you guys try foreman-tracer utility (SystemTap based, will only
>>>> >> work on CentOS 7 or higher or ST-enabled kernels) on your production
>>>> >> instance? No changes required in Foreman, setup is quite easy:
>>>> >>
>>>> >> https://github.com/lzap/foreman-tracer
>>>> >>
>>>> >> Interesting statistics would be
>>>> >>
>>>> >> foreman-tracer rails objects-total
>>>> >>
>>>> >> and
>>>> >>
>>>> >> foreman-tracer rails objects
>>>> >>
>>>> >> It's like "top" utility experience, pastebin the bottlenecks please.
>>>> >>
>>>> >> Thanks
>>>> >>
>>>> >> On Mon, Oct 31, 2016 at 12:00 PM, Erez Zarum <erez...@gmail.com>
>>>> >> wrote:
>>>> >> > I have just upgraded a foreman deployment to 1.13.1 from 1.12.1 and
>>>> >> > experience the same performance degradation on the foreman web app,
>>>> >> > ruby
>>>> >> > processes taking a lot of memory, no new plugins were introduced.
>>>> >> > Same as what was written above, I suddenly see ruby instances using
>>>> >> > of
>>>> >> > up to
>>>> >> > 4GB RAM/instance as of before i never saw this happens.
>>>> >> >
>>>> >> > On Monday, October 31, 2016 at 10:28:19 AM UTC+2, ohad wrote:
>>>> >> >>
>>>> >> >>
>>>> >> >>
>>>> >> >> On Mon, Oct 31, 2016 at 1:55 AM, Guy Waugh <guywa...@gmail.com>
>>>> >> >> wrote:
>>>> >> >>>
>>>> >> >>> Hi all,
>>>> >> >>>
>>>> >> >>> We have recently upgraded Foreman from 1.9.2 to 1.12.3 and are
>>>> >> >>> finding
>>>> >> >>> that Foreman's ENC/facts/reports components are requiring a lot
>>>> >> >>> more
>>>> >> >>> resources than the old version.
>>>> >> >>>
>>>> >> >>> We have around 1,700 hosts in Foreman, with 600 of them checking
>>>> >> >>> in
>>>> >> >>> with
>>>> >> >>> external puppet masters every 30 minutes. Foreman runs under
>>>> >> >>> passenger
>>>> >> >>> and
>>>> >> >>> has a mysql database.
>>>> >> >>>
>>>> >> >>> On 1.9.2, we had 1 x 4 vCPU, 8GB RAM Foreman server handling the
>>>> >> >>> web
>>>> >> >>> UI,
>>>> >> >>> database and ENC/facts/reports. On 1.12.3, we have expanded to 4
>>>> >> >>> x 8
>>>> >> >>> vCPU,
>>>> >> >>> 32GB RAM Foreman servers handling ENC/facts/reports, and 1 x 8
>>>> >> >>> vCPU,
>>>> >> >>> 32GB
>>>> >> >>> RAM Foreman server handling the web UI and database. We are
>>>> >> >>> currently
>>>> >> >>> restarting apache on the ENC/fact/report servers every 20 minutes
>>>> >> >>> to
>>>> >> >>> stop
>>>> >> >>> them running out of memory (if we tune passenger more
>>>> >> >>> aggressively,
>>>> >> >>> the
>>>> >> >>> request queue fills up).
>>>> >> >>>
>>>> >> >>> I noticed a couple of other posts in the last few days regarding
>>>> >> >>> performance. Is anyone running a similarly-sized installation on
>>>> >> >>> version
>>>> >> >>> 1.12/1.13? If so, what performance are you getting? Any tips for
>>>> >> >>> tuning
>>>> >> >>> passenger or other components?
>>>> >> >>
>>>> >> >>
>>>> >> >> Are you using a new plugins? or just plain foreman? any
>>>> >> >> information you
>>>> >> >> could share that would provide some light on where things are
>>>> >> >> slow?
>>>> >> >> (e.g.
>>>> >> >> slow operations, etc).
>>>> >> >>
>>>> >> >> thanks,
>>>> >> >> Ohad
>>>> >> >>>
>>>> >> >>>
>>>> >> >>> Regards
>>>> >> >>> Guy.
>>>> >> >>>
>>>> >> >>> --
>>>> >> >>> You received this message because you are subscribed to the
>>>> >> >>> Google
>>>> >> >>> Groups
>>>> >> >>> "Foreman users" group.
>>>> >> >>> To unsubscribe from this group and stop receiving emails from it,
>>>> >> >>> send
>>>> >> >>> an
>>>> >> >>> email to foreman-user...@googlegroups.com.
>>>> >> >>> To post to this group, send email to forema...@googlegroups.com.
>>>> >> >>> Visit this group at
>>>> >> >>> https://groups.google.com/group/foreman-users.
>>>> >> >>> For more options, visit https://groups.google.com/d/optout.
>>>> >> >>
>>>> >> >>
>>>> >> > --
>>>> >> > You received this message because you are subscribed to the Google
>>>> >> > Groups
>>>> >> > "Foreman users" group.
>>>> >> > To unsubscribe from this group and stop receiving emails from it,
>>>> >> > send
>>>> >> > an
>>>> >> > email to foreman-user...@googlegroups.com.
>>>> >> > To post to this group, send email to forema...@googlegroups.com.
>>>> >> > Visit this group at https://groups.google.com/group/foreman-users.
>>>> >> > For more options, visit https://groups.google.com/d/optout.
>>>> >>
>>>> >>
>>>> >>
>>>> >> --
>>>> >> Later,
>>>> >>   Lukas @lzap Zapletal
>>>> >
>>>> > --
>>>> > You received this message because you are subscribed to the Google
>>>> > Groups
>>>> > "Foreman users" group.
>>>> > To unsubscribe from this group and stop receiving emails from it, send
>>>> > an
>>>> > email to foreman-user...@googlegroups.com.
>>>> > To post to this group, send email to forema...@googlegroups.com.
>>>> > Visit this group at https://groups.google.com/group/foreman-users.
>>>> > For more options, visit https://groups.google.com/d/optout.
>>>>
>>>>
>>>>
>>>> --
>>>> Later,
>>>>   Lukas @lzap Zapletal
>
> --
> You received this message because you are subscribed to the Google Groups
> "Foreman users" group.
> To unsubscribe from this group and stop receiving emails from it, send an
> email to foreman-users+unsubscr...@googlegroups.com.
> To post to this group, send email to foreman-users@googlegroups.com.
> Visit this group at https://groups.google.com/group/foreman-users.
> For more options, visit https://groups.google.com/d/optout.



-- 
Later,
  Lukas @lzap Zapletal

-- 
You received this message because you are subscribed to the Google Groups 
"Foreman users" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to foreman-users+unsubscr...@googlegroups.com.
To post to this group, send email to foreman-users@googlegroups.com.
Visit this group at https://groups.google.com/group/foreman-users.
For more options, visit https://groups.google.com/d/optout.

Reply via email to