diff --git a/metrics_server/metrics_server.rb b/metrics_server/metrics_server.rb
index d1a64aa5b7924862beead5914d4b04776568e503..0516d711ffba1ba3ede22a14fc1c57bad27a7431 100644
--- a/metrics_server/metrics_server.rb
+++ b/metrics_server/metrics_server.rb
@@ -43,6 +43,7 @@ def spawn(target, metrics_dir:, **options)
       path = options[:path]&.then { |p| Pathname.new(p) } || Pathname.new('')
       cmd = path.join('gitlab-metrics-exporter').to_path
       env = {
+        'GOGC' => '10', # Set Go GC heap goal to 10% to curb memory growth.
         'GME_MMAP_METRICS_DIR' => metrics_dir.to_s,
         'GME_PROBES' => 'self,mmap',
         'GME_SERVER_HOST' => settings['address'],
diff --git a/spec/metrics_server/metrics_server_spec.rb b/spec/metrics_server/metrics_server_spec.rb
index c7716184d4865a8f4d938afc19238a7cfb12a20d..58577d4d633e6802853535022743ca6ab97eb5de 100644
--- a/spec/metrics_server/metrics_server_spec.rb
+++ b/spec/metrics_server/metrics_server_spec.rb
@@ -4,7 +4,7 @@
 
 require_relative '../../metrics_server/metrics_server'
 
-RSpec.describe MetricsServer do # rubocop:disable RSpec/FilePath
+RSpec.describe MetricsServer, feature_category: :application_performance do # rubocop:disable RSpec/FilePath
   let(:prometheus_config) { ::Prometheus::Client.configuration }
   let(:metrics_dir) { Dir.mktmpdir }
 
@@ -118,6 +118,7 @@
           let(:expected_port) { target == 'puma' ? '8083' : '8082' }
           let(:expected_env) do
             {
+              'GOGC' => '10',
               'GME_MMAP_METRICS_DIR' => metrics_dir,
               'GME_PROBES' => 'self,mmap',
               'GME_SERVER_HOST' => 'localhost',