CINXE.COM
Requirements 路 Install 路 Help 路 GitLab
<!DOCTYPE html> <html class="gl-light ui-red with-top-bar with-header " lang="en"> <head prefix="og: http://ogp.me/ns#"> <meta charset="utf-8"> <meta content="IE=edge" http-equiv="X-UA-Compatible"> <meta content="width=device-width, initial-scale=1" name="viewport"> <title>Requirements 路 Install 路 Help 路 GitLab</title> <script> //<![CDATA[ window.gon={};gon.api_version="v4";gon.default_avatar_url="https://gitlab.winehq.org/assets/no_avatar-849f9c04a3a0d0cea2424ae97b27447dc64a7dbfae83c036c45b403392f0e8ba.png";gon.max_file_size=10;gon.asset_host=null;gon.webpack_public_path="/assets/webpack/";gon.relative_url_root="";gon.user_color_mode="gl-light";gon.user_color_scheme="white";gon.markdown_surround_selection=null;gon.markdown_automatic_lists=null;gon.math_rendering_limits_enabled=true;gon.recaptcha_api_server_url="https://www.recaptcha.net/recaptcha/api.js";gon.recaptcha_sitekey="6LeicnYgAAAAAMX8j8CajLatGOq375vwTeO0X92E";gon.gitlab_url="https://gitlab.winehq.org";gon.promo_url="https://about.gitlab.com";gon.forum_url="https://forum.gitlab.com";gon.docs_url="https://docs.gitlab.com";gon.revision="ec90ea9eb29";gon.feature_category="not_owned";gon.gitlab_logo="/assets/gitlab_logo-2957169c8ef64c58616a1ac3f4fc626e8a35ce4eb3ed31bb0d873712f2a041a0.png";gon.secure=true;gon.sprite_icons="/assets/icons-8791a66659d025e0a4c801978c79a1fbd82db1d27d85f044a35728ea7cf0ae80.svg";gon.sprite_file_icons="/assets/file_icons/file_icons-7cd3d6c3b29a6d972895f36472978a4b5adb4b37f9b5d0716a380e82389f7e0e.svg";gon.emoji_sprites_css_path="/assets/emoji_sprites-d746ae2450a3e9c626d338d77a101b84ff33a47c0c281b676d75c4a6ed2948a4.css";gon.emoji_backend_version=4;gon.gridstack_css_path="/assets/lazy_bundles/gridstack-5fcfd4ffbea1db04eaf7f16521bcab19ae3af042c8b4afe8d16781eda5a70799.css";gon.test_env=false;gon.disable_animations=false;gon.suggested_label_colors={"#cc338b":"Magenta-pink","#dc143c":"Crimson","#c21e56":"Rose red","#cd5b45":"Dark coral","#ed9121":"Carrot orange","#eee600":"Titanium yellow","#009966":"Green-cyan","#8fbc8f":"Dark sea green","#6699cc":"Blue-gray","#e6e6fa":"Lavender","#9400d3":"Dark violet","#330066":"Deep violet","#36454f":"Charcoal grey","#808080":"Gray"};gon.first_day_of_week=0;gon.time_display_relative=true;gon.time_display_format=0;gon.ee=false;gon.jh=false;gon.dot_com=false;gon.uf_error_prefix="UF";gon.pat_prefix="glpat-";gon.keyboard_shortcuts_enabled=true;gon.diagramsnet_url="https://embed.diagrams.net";gon.features={"sourceEditorToolbar":false,"vscodeWebIde":true,"uiForOrganizations":false,"organizationSwitching":false,"findAndReplace":false,"removeMonitorMetrics":true,"workItemsViewPreference":false,"searchButtonTopRight":false}; //]]> </script> <link rel="stylesheet" href="/assets/application-2e69a08e74e113997b5ba7fc5cd3e020a6f407d9ad552675adc6d78c2b23d0f7.css" /> <link rel="stylesheet" href="/assets/page_bundles/commit_description-1e2cba4dda3c7b30dd84924809020c569f1308dea51520fe1dd5d4ce31403195.css" /><link rel="stylesheet" href="/assets/page_bundles/work_items-cbc6a2e1633c4e847a617e35cc4833b85b80816db688d3d6dd3cd31d4251bc53.css" /><link rel="stylesheet" href="/assets/page_bundles/notes_shared-caf98f77b75b4b5399bdde69c069ee023fefdaa986d687c937e8010218785f51.css" /> <link rel="stylesheet" href="/assets/application_utilities-0bfb919a8a7eb0e89544dfe328e69461ccb276a565685fdb6ae3b14f3db3f41b.css" /> <link rel="stylesheet" href="/assets/tailwind-016e83140c37d97dbdff0cef9c063fcd43d214866665fb783774776747928853.css" /> <link rel="stylesheet" href="/assets/fonts-fae5d3f79948bd85f18b6513a025f863b19636e85b09a1492907eb4b1bb0557b.css" /> <link rel="stylesheet" href="/assets/highlight/themes/white-5ffbb706faebead681b01c8b52e92c6c0d35ad5b1c11d39012c90bcaf7892ca8.css" /> <link rel="preload" href="/assets/application_utilities-0bfb919a8a7eb0e89544dfe328e69461ccb276a565685fdb6ae3b14f3db3f41b.css" as="style" type="text/css"> <link rel="preload" href="/assets/application-2e69a08e74e113997b5ba7fc5cd3e020a6f407d9ad552675adc6d78c2b23d0f7.css" as="style" type="text/css"> <link rel="preload" href="/assets/highlight/themes/white-5ffbb706faebead681b01c8b52e92c6c0d35ad5b1c11d39012c90bcaf7892ca8.css" as="style" type="text/css"> <script src="/assets/webpack/runtime.507390f4.bundle.js" defer="defer"></script> <script src="/assets/webpack/main.a4c9ae4f.chunk.js" defer="defer"></script> <script src="/assets/webpack/commons-pages.admin.abuse_reports.show-pages.admin.topics.edit-pages.admin.topics.new-pages.dashboar-c8f1318b.54872cef.chunk.js" defer="defer"></script> <script src="/assets/webpack/commons-pages.admin.abuse_reports.show-pages.dashboard.issues-pages.dashboard.milestones.show-pages.-13e11bbf.1a73330b.chunk.js" defer="defer"></script> <script src="/assets/webpack/commons-pages.admin.abuse_reports.show-pages.dashboard.issues-pages.groups.boards-pages.groups.issue-8dfa5f96.20262e8b.chunk.js" defer="defer"></script> <script src="/assets/webpack/commons-pages.admin.abuse_reports.show-pages.dashboard.issues-pages.groups.boards-pages.groups.issue-f804d6c2.d4f467df.chunk.js" defer="defer"></script> <script src="/assets/webpack/commons-pages.groups.new-pages.import.gitlab_projects.new-pages.import.manifest.new-pages.projects.n-44c6c18e.800b02b5.chunk.js" defer="defer"></script> <script src="/assets/webpack/commons-pages.search.show-super_sidebar.98a5daf8.chunk.js" defer="defer"></script> <script src="/assets/webpack/super_sidebar.839aed14.chunk.js" defer="defer"></script> <script src="/assets/webpack/default.700474e1.chunk.js" defer="defer"></script> <meta content="object" property="og:type"> <meta content="GitLab" property="og:site_name"> <meta content="Requirements 路 Install 路 Help 路 GitLab" property="og:title"> <meta content="WineHQ GitLab" property="og:description"> <meta content="https://gitlab.winehq.org/assets/twitter_card-570ddb06edf56a2312253c5872489847a0f385112ddbcd71ccfa1570febab5d2.jpg" property="og:image"> <meta content="64" property="og:image:width"> <meta content="64" property="og:image:height"> <meta content="https://gitlab.winehq.org/help/install/requirements.md" property="og:url"> <meta content="summary" property="twitter:card"> <meta content="Requirements 路 Install 路 Help 路 GitLab" property="twitter:title"> <meta content="WineHQ GitLab" property="twitter:description"> <meta content="https://gitlab.winehq.org/assets/twitter_card-570ddb06edf56a2312253c5872489847a0f385112ddbcd71ccfa1570febab5d2.jpg" property="twitter:image"> <meta name="csrf-param" content="authenticity_token" /> <meta name="csrf-token" content="ru1QFtE1xmitN6AngtLtZpne09LroVAdQ1laF7OdDA27kYFYIO0tNjJJSKSziy-AmgbM41prIytr1BtJcIgWYA" /> <meta name="csp-nonce" /> <meta name="action-cable-url" content="/-/cable" /> <link href="/-/manifest.json" rel="manifest"> <link rel="icon" type="image/png" href="/uploads/-/system/appearance/favicon/1/wine-favicon.ico" id="favicon" data-original-href="/uploads/-/system/appearance/favicon/1/wine-favicon.ico" /> <link rel="apple-touch-icon" type="image/x-icon" href="/assets/apple-touch-icon-b049d4bc0dd9626f31db825d61880737befc7835982586d015bded10b4435460.png" /> <link href="/search/opensearch.xml" rel="search" title="Search GitLab" type="application/opensearchdescription+xml"> <meta content="WineHQ GitLab" name="description"> <meta content="#580d02" name="theme-color"> </head> <body class="tab-width-8 gl-browser-ie gl-platform-windows" data-page="help:show"> <script> //<![CDATA[ gl = window.gl || {}; gl.client = {"isIe":true,"isWindows":true}; //]]> </script> <header class="header-logged-out" data-testid="navbar"> <a class="gl-sr-only gl-accessibility" href="#content-body">Skip to content</a> <div class="container-fluid"> <nav aria-label="Explore GitLab" class="header-logged-out-nav gl-flex gl-gap-3 gl-justify-between"> <div class="gl-flex gl-items-center gl-gap-1"> <span class="gl-sr-only">GitLab</span> <a title="Homepage" id="logo" class="header-logged-out-logo has-tooltip" aria-label="Homepage" href="/"><img class="brand-header-logo lazy" alt="" data-src="/uploads/-/system/appearance/header_logo/1/winehq_logo_gitlab_small.png" src="data:image/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==" /> </a></div> <ul class="gl-list-none gl-p-0 gl-m-0 gl-flex gl-gap-3 gl-items-center gl-grow"> <li class="header-logged-out-nav-item"> <a class="" href="/explore">Explore</a> </li> </ul> <ul class="gl-list-none gl-p-0 gl-m-0 gl-flex gl-gap-3 gl-items-center gl-justify-end"> <li class="header-logged-out-nav-item"> <a href="/users/sign_in?redirect_to_referer=yes">Sign in</a> </li> <li class="header-logged-out-nav-item"> <a class="gl-button btn btn-md btn-confirm " href="/users/sign_up"><span class="gl-button-text"> Register </span> </a></li> </ul> </nav> </div> </header> <div class="layout-page page-with-super-sidebar"> <aside class="js-super-sidebar super-sidebar super-sidebar-loading" data-command-palette="{}" data-force-desktop-expanded-sidebar="true" data-is-saas="false" data-root-path="/" data-sidebar="{"is_logged_in":false,"context_switcher_links":[{"title":"Explore","link":"/explore","icon":"compass"}],"current_menu_items":[{"id":"projects_menu","title":"Projects","icon":"project","avatar_shape":"rect","link":"/explore/projects/starred","is_active":false,"items":[],"separated":false},{"id":"groups_menu","title":"Groups","icon":"group","avatar_shape":"rect","link":"/explore/groups","is_active":false,"items":[],"separated":false},{"id":"catalog_menu","title":"CI/CD Catalog","icon":"catalog-checkmark","avatar_shape":"rect","link":"/explore/catalog","is_active":false,"items":[],"separated":false},{"id":"topics_menu","title":"Topics","icon":"labels","avatar_shape":"rect","link":"/explore/projects/topics","is_active":false,"items":[],"separated":false},{"id":"snippets_menu","title":"Snippets","icon":"snippet","avatar_shape":"rect","link":"/explore/snippets","is_active":false,"items":[],"separated":false}],"current_context_header":"Explore","support_path":"https://about.gitlab.com/get-help/","docs_path":"/help/docs","display_whats_new":false,"show_version_check":null,"search":{"search_path":"/search","issues_path":"/dashboard/issues","mr_path":"/dashboard/merge_requests","autocomplete_path":"/search/autocomplete","settings_path":"/search/settings","search_context":{"for_snippets":null}},"panel_type":null,"shortcut_links":[{"title":"Snippets","href":"/explore/snippets","css_class":"dashboard-shortcuts-snippets"},{"title":"Groups","href":"/explore/groups","css_class":"dashboard-shortcuts-groups"},{"title":"Projects","href":"/explore/projects/starred","css_class":"dashboard-shortcuts-projects"}],"terms":null}"></aside> <div class="content-wrapper"> <div class="broadcast-wrapper"> </div> <div class="alert-wrapper alert-wrapper-top-space gl-flex gl-flex-col gl-gap-3 container-fluid container-limited"> <div class="gl-alert gl-alert-danger gl-alert-not-dismissible" role="alert"> <div class="gl-alert-icon-container"> <svg class="s16 gl-alert-icon gl-alert-icon-no-title" data-testid="error-icon"><use href="/assets/icons-8791a66659d025e0a4c801978c79a1fbd82db1d27d85f044a35728ea7cf0ae80.svg#error"></use></svg> </div> <div class="gl-alert-content" role="alert"> <div class="gl-alert-body"> GitLab may not work properly, because you are using an outdated web browser. <br> Please install a <a target="_blank" rel="noopener noreferrer" href="/help/install/requirements.md#supported-web-browsers">supported web browser</a> for a better experience. </div> </div> </div> </div> <div class="top-bar-fixed container-fluid" data-testid="top-bar"> <div class="top-bar-container gl-flex gl-items-center gl-gap-2"> <div class="gl-grow gl-basis-0 gl-flex gl-items-center gl-justify-start"> <button class="gl-button btn btn-icon btn-md btn-default btn-default-tertiary js-super-sidebar-toggle-expand super-sidebar-toggle -gl-ml-3" aria-controls="super-sidebar" aria-expanded="false" aria-label="Primary navigation sidebar" type="button"><svg class="s16 gl-icon gl-button-icon " data-testid="sidebar-icon"><use href="/assets/icons-8791a66659d025e0a4c801978c79a1fbd82db1d27d85f044a35728ea7cf0ae80.svg#sidebar"></use></svg> </button> <script type="application/ld+json"> {"@context":"https://schema.org","@type":"BreadcrumbList","itemListElement":[{"@type":"ListItem","position":1,"name":"Help","item":"https://gitlab.winehq.org/help"},{"@type":"ListItem","position":2,"name":"Help","item":"https://gitlab.winehq.org/help/install/requirements.md"}]} </script> <div data-testid="breadcrumb-links" id="js-vue-page-breadcrumbs-wrapper"> <div data-breadcrumbs-json="[{"text":"Help","href":"/help","avatarPath":null},{"text":"Help","href":"/help/install/requirements.md","avatarPath":null}]" id="js-vue-page-breadcrumbs"></div> <div id="js-injected-page-breadcrumbs"></div> </div> </div> <div class="gl-flex-none gl-flex gl-items-center gl-justify-center"> <div id="js-advanced-search-modal"></div> </div> <div class="gl-grow gl-basis-0 gl-flex gl-items-center gl-justify-end"> <div id="js-work-item-feedback"></div> </div> </div> </div> <div class="container-fluid container-limited limit-container-width"> <main class="content" id="content-body"> <div class="flash-container flash-container-page sticky" data-testid="flash-container"> <div id="js-global-alerts"></div> </div> <div class="md gl-text-lg gl-mt-3"> <h1 data-sourcepos="1:1-1:34" dir="auto">
<a href="#gitlab-installation-requirements" aria-hidden="true" class="anchor" id="user-content-gitlab-installation-requirements"></a>GitLab installation requirements</h1>
<p data-sourcepos="3:1-5:26" dir="auto">DETAILS:
<strong data-sourcepos="4:1-4:9">Tier:</strong> Free, Premium, Ultimate
<strong data-sourcepos="5:1-5:13">Offering:</strong> Self-managed</p>
<p data-sourcepos="7:1-7:79" dir="auto">This page contains information about the system requirements to install GitLab.</p>
<h2 data-sourcepos="9:1-9:10" dir="auto">
<a href="#storage" aria-hidden="true" class="anchor" id="user-content-storage"></a>Storage</h2>
<p data-sourcepos="11:1-12:94" dir="auto">The necessary storage space largely depends on the size of the repositories you want to have in GitLab.
As a guideline, you should have at least as much free space as all your repositories combined.</p>
<p data-sourcepos="14:1-16:101" dir="auto">The Linux package requires about 2.5 GB of storage space for installation.
For storage flexibility, consider mounting your hard drive through logical volume management.
You should have a hard drive with at least 7,200 RPM or a solid-state drive to reduce response times.</p>
<p data-sourcepos="18:1-19:114" dir="auto">Because file system performance might affect the overall performance of GitLab, you should
<a data-sourcepos="19:1-19:113" href="../administration/nfs.md#avoid-using-cloud-based-file-systems">avoid using cloud-based file systems for storage</a>.</p>
<h2 data-sourcepos="21:1-21:6" dir="auto">
<a href="#cpu" aria-hidden="true" class="anchor" id="user-content-cpu"></a>CPU</h2>
<p data-sourcepos="23:1-24:97" dir="auto">CPU requirements depend on the number of users and expected workload.
The workload includes your users' activity, use of automation and mirroring, and repository size.</p>
<p data-sourcepos="26:1-28:82" dir="auto">For a maximum of 20 requests per second or 1,000 users, you should have 8 vCPU.
For more users or higher workload,
see <a data-sourcepos="28:5-28:81" href="../administration/reference_architectures/index.md">reference architectures</a>.</p>
<h2 data-sourcepos="30:1-30:9" dir="auto">
<a href="#memory" aria-hidden="true" class="anchor" id="user-content-memory"></a>Memory</h2>
<p data-sourcepos="32:1-33:97" dir="auto">Memory requirements depend on the number of users and expected workload.
The workload includes your users' activity, use of automation and mirroring, and repository size.</p>
<p data-sourcepos="35:1-37:82" dir="auto">For a maximum of 20 requests per second or 1,000 users, you should have 16 GB of memory.
For more users or higher workload,
see <a data-sourcepos="37:5-37:81" href="../administration/reference_architectures/index.md">reference architectures</a>.</p>
<p data-sourcepos="39:1-41:124" dir="auto">In some cases, GitLab can run with at least 8 GB of memory.
For more information, see
<a data-sourcepos="41:1-41:123" href="https://docs.gitlab.com/omnibus/settings/memory_constrained_envs.html" rel="nofollow noreferrer noopener" target="_blank">running GitLab in a memory-constrained environment</a>.</p>
<h2 data-sourcepos="43:1-43:13" dir="auto">
<a href="#postgresql" aria-hidden="true" class="anchor" id="user-content-postgresql"></a>PostgreSQL</h2>
<p data-sourcepos="45:1-47:52" dir="auto"><a data-sourcepos="45:1-45:41" href="https://www.postgresql.org/" rel="nofollow noreferrer noopener" target="_blank">PostgreSQL</a> is the only supported database and is bundled with the Linux package.
You can also use an <a data-sourcepos="46:21-46:165" href="https://docs.gitlab.com/omnibus/settings/database.html#using-a-non-packaged-postgresql-database-management-server" rel="nofollow noreferrer noopener" target="_blank">external PostgreSQL database</a>
<a data-sourcepos="47:1-47:51" href="#postgresql-tuning">which must be tuned correctly</a>.</p>
<p data-sourcepos="49:1-50:34" dir="auto">Depending on the <a data-sourcepos="49:18-49:86" href="../administration/reference_architectures/index.md">number of users</a>,
the PostgreSQL server should have:</p>
<ul data-sourcepos="52:1-55:0" dir="auto">
<li data-sourcepos="52:1-52:59">For most GitLab instances, at least 5 to 10 GB of storage</li>
<li data-sourcepos="53:1-55:0">For GitLab Ultimate, at least 12 GB of storage
(1 GB of vulnerability data must be imported)</li>
</ul>
<p data-sourcepos="56:1-56:68" dir="auto">For the following versions of GitLab, use these PostgreSQL versions:</p>
<table data-sourcepos="58:1-63:159" dir="auto">
<thead>
<tr data-sourcepos="58:1-58:76">
<th data-sourcepos="58:2-58:17">GitLab version</th>
<th data-sourcepos="58:19-58:46">Minimum PostgreSQL version</th>
<th data-sourcepos="58:48-58:75">Maximum PostgreSQL version</th>
</tr>
</thead>
<tbody>
<tr data-sourcepos="60:1-60:123">
<td data-sourcepos="60:2-60:17">18.x</td>
<td data-sourcepos="60:19-60:103">16.x (proposed in <a data-sourcepos="60:38-60:101" href="https://gitlab.com/groups/gitlab-org/-/epics/12172" rel="nofollow noreferrer noopener" target="_blank">epic 12172</a>)</td>
<td data-sourcepos="60:105-60:122">To be determined</td>
</tr>
<tr data-sourcepos="61:1-61:158">
<td data-sourcepos="61:2-61:17">17.x</td>
<td data-sourcepos="61:19-61:46">14.x</td>
<td data-sourcepos="61:48-61:157">16.x (<a data-sourcepos="61:55-61:155" href="https://gitlab.com/gitlab-org/gitlab/-/merge_requests/145298" rel="nofollow noreferrer noopener" target="_blank">tested against GitLab 16.10 and later</a>)</td>
</tr>
<tr data-sourcepos="62:1-62:157">
<td data-sourcepos="62:2-62:17">16.x</td>
<td data-sourcepos="62:19-62:46">13.6</td>
<td data-sourcepos="62:48-62:156">15.x (<a data-sourcepos="62:55-62:154" href="https://gitlab.com/gitlab-org/gitlab/-/merge_requests/119344" rel="nofollow noreferrer noopener" target="_blank">tested against GitLab 16.1 and later</a>)</td>
</tr>
<tr data-sourcepos="63:1-63:159">
<td data-sourcepos="63:2-63:17">15.x</td>
<td data-sourcepos="63:19-63:46">12.10</td>
<td data-sourcepos="63:48-63:158">14.x (<a data-sourcepos="63:55-63:150" href="https://gitlab.com/gitlab-org/gitlab/-/merge_requests/114624" rel="nofollow noreferrer noopener" target="_blank">tested against GitLab 15.11 only</a>), 13.x</td>
</tr>
</tbody>
</table>
<p data-sourcepos="65:1-67:95" dir="auto">Minor PostgreSQL releases <a data-sourcepos="65:27-65:111" href="https://www.postgresql.org/support/versioning/" rel="nofollow noreferrer noopener" target="_blank">include only bug and security fixes</a>.
Always use the latest minor version to avoid known issues in PostgreSQL.
For more information, see <a data-sourcepos="67:27-67:94" href="https://gitlab.com/gitlab-org/gitlab/-/issues/364763" rel="nofollow noreferrer noopener" target="_blank">issue 364763</a>.</p>
<p data-sourcepos="69:1-70:108" dir="auto">To use a later major version of PostgreSQL than specified, check if a
<a data-sourcepos="70:1-70:107" href="http://gitlab-org.gitlab.io/omnibus-gitlab/licenses.html" rel="nofollow noreferrer noopener" target="_blank">later version is bundled with the Linux package</a>.</p>
<p data-sourcepos="72:1-73:85" dir="auto">You must also ensure some extensions are loaded into every GitLab database.
For more information, see <a data-sourcepos="73:27-73:84" href="postgresql_extensions.md">managing PostgreSQL extensions</a>.</p>
<h3 data-sourcepos="75:1-75:14" dir="auto">
<a href="#gitlab-geo" aria-hidden="true" class="anchor" id="user-content-gitlab-geo"></a>GitLab Geo</h3>
<p data-sourcepos="77:1-80:62" dir="auto">For <a data-sourcepos="77:5-77:48" href="../administration/geo/index.md">GitLab Geo</a>, you should use the Linux package or
<a data-sourcepos="78:1-78:120" href="../administration/reference_architectures/index.md#recommended-cloud-providers-and-services">validated cloud providers</a>
to install GitLab.
Compatibility with other external databases is not guaranteed.</p>
<p data-sourcepos="82:1-82:118" dir="auto">For more information, see <a data-sourcepos="82:27-82:117" href="../administration/geo/index.md#requirements-for-running-geo">requirements for running Geo</a>.</p>
<h3 data-sourcepos="84:1-84:24" dir="auto">
<a href="#locale-compatibility" aria-hidden="true" class="anchor" id="user-content-locale-compatibility"></a>Locale compatibility</h3>
<p data-sourcepos="86:1-90:9" dir="auto">When you change locale data in <code data-sourcepos="86:33-86:37">glibc</code>, PostgreSQL database files are
no longer fully compatible between different operating systems.
To avoid index corruption,
<a data-sourcepos="89:1-89:128" href="../administration/geo/replication/troubleshooting/common.md#check-os-locale-data-compatibility">check for locale compatibility</a>
when you:</p>
<ul data-sourcepos="92:1-95:0" dir="auto">
<li data-sourcepos="92:1-92:46">Move binary PostgreSQL data between servers.</li>
<li data-sourcepos="93:1-93:34">Upgrade your Linux distribution.</li>
<li data-sourcepos="94:1-95:0">Update or change third-party container images.</li>
</ul>
<p data-sourcepos="96:1-96:117" dir="auto">For more information, see <a data-sourcepos="96:27-96:116" href="../administration/postgresql/upgrading_os.md">upgrading operating systems for PostgreSQL</a>.</p>
<h3 data-sourcepos="98:1-98:18" dir="auto">
<a href="#gitlab-schemas" aria-hidden="true" class="anchor" id="user-content-gitlab-schemas"></a>GitLab schemas</h3>
<p data-sourcepos="100:1-102:94" dir="auto">You should create or use databases exclusively for GitLab, <a data-sourcepos="100:60-100:96" href="../administration/geo/index.md">Geo</a>,
<a data-sourcepos="101:1-101:54" href="../administration/gitaly/praefect.md">Gitaly Cluster</a>, or other components.
Do not create or modify databases, schemas, users, or other properties except when you follow:</p>
<ul data-sourcepos="104:1-106:0" dir="auto">
<li data-sourcepos="104:1-104:40">Procedures in the GitLab documentation</li>
<li data-sourcepos="105:1-106:0">The directions of GitLab Support or engineers</li>
</ul>
<p data-sourcepos="107:1-107:47" dir="auto">The main GitLab application uses three schemas:</p>
<ul data-sourcepos="109:1-112:0" dir="auto">
<li data-sourcepos="109:1-109:29">The default <code data-sourcepos="109:16-109:21">public</code> schema</li>
<li data-sourcepos="110:1-110:52">
<code data-sourcepos="110:4-110:27">gitlab_partitions_static</code> (created automatically)</li>
<li data-sourcepos="111:1-112:0">
<code data-sourcepos="111:4-111:28">gitlab_partitions_dynamic</code> (created automatically)</li>
</ul>
<p data-sourcepos="113:1-115:75" dir="auto">During Rails database migrations, GitLab might create or modify schemas or tables.
Database migrations are tested against the schema definition in the GitLab codebase.
If you modify any schema, <a data-sourcepos="115:27-115:63" href="../update/index.md">GitLab upgrades</a> might fail.</p>
<h3 data-sourcepos="117:1-117:21" dir="auto">
<a href="#postgresql-tuning" aria-hidden="true" class="anchor" id="user-content-postgresql-tuning"></a>PostgreSQL tuning</h3>
<p data-sourcepos="119:1-119:76" dir="auto">Here are some required settings for externally managed PostgreSQL instances.</p>
<table data-sourcepos="121:1-126:190" dir="auto">
<thead>
<tr data-sourcepos="121:1-121:62">
<th data-sourcepos="121:2-121:25" align="left">Tunable setting</th>
<th data-sourcepos="121:27-121:42" align="left">Required value</th>
<th data-sourcepos="121:44-121:61" align="left">More information</th>
</tr>
</thead>
<tbody>
<tr data-sourcepos="123:1-123:177">
<td data-sourcepos="123:2-123:25" align="left"><code data-sourcepos="123:4-123:11">work_mem</code></td>
<td data-sourcepos="123:27-123:42" align="left">minimum <code data-sourcepos="123:37-123:39">8MB</code>
</td>
<td data-sourcepos="123:44-123:176" align="left">This value is the Linux package default. In large deployments, if queries create temporary files, you should increase this setting.</td>
</tr>
<tr data-sourcepos="124:1-124:169">
<td data-sourcepos="124:2-124:25" align="left"><code data-sourcepos="124:4-124:23">maintenance_work_mem</code></td>
<td data-sourcepos="124:27-124:42" align="left">minimum <code data-sourcepos="124:37-124:40">64MB</code>
</td>
<td data-sourcepos="124:44-124:168" align="left">You require <a data-sourcepos="124:57-124:166" href="https://gitlab.com/gitlab-org/omnibus-gitlab/-/issues/8377#note_1728173087" rel="nofollow noreferrer noopener" target="_blank">more for larger database servers</a>.</td>
</tr>
<tr data-sourcepos="125:1-125:146">
<td data-sourcepos="125:2-125:25" align="left"><code data-sourcepos="125:4-125:17">shared_buffers</code></td>
<td data-sourcepos="125:27-125:42" align="left">minimum <code data-sourcepos="125:37-125:39">2GB</code>
</td>
<td data-sourcepos="125:44-125:145" align="left">You require more for larger database servers. The Linux package default is set to 25% of server RAM.</td>
</tr>
<tr data-sourcepos="126:1-126:190">
<td data-sourcepos="126:2-126:25" align="left"><code data-sourcepos="126:4-126:20">statement_timeout</code></td>
<td data-sourcepos="126:27-126:42" align="left">maximum 1 min</td>
<td data-sourcepos="126:44-126:189" align="left">A statement timeout prevents runaway issues with locks and the database rejecting new clients. One minute matches the Puma rack timeout setting.</td>
</tr>
</tbody>
</table>
<h2 data-sourcepos="128:1-128:7" dir="auto">
<a href="#puma" aria-hidden="true" class="anchor" id="user-content-puma"></a>Puma</h2>
<p data-sourcepos="130:1-131:60" dir="auto">The recommended <a data-sourcepos="130:17-130:40" href="https://puma.io/" rel="nofollow noreferrer noopener" target="_blank">Puma</a> settings depend on your <a data-sourcepos="130:66-130:99" href="install_methods.md">installation</a>.
By default, the Linux package uses the recommended settings.</p>
<p data-sourcepos="133:1-133:24" dir="auto">To adjust Puma settings:</p>
<ul data-sourcepos="135:1-138:0" dir="auto">
<li data-sourcepos="135:1-135:83">For the Linux package, see <a data-sourcepos="135:30-135:82" href="../administration/operations/puma.md">Puma settings</a>.</li>
<li data-sourcepos="136:1-138:0">For the GitLab Helm chart, see the
<a data-sourcepos="137:3-137:90" href="https://docs.gitlab.com/charts/charts/gitlab/webservice/index.html" rel="nofollow noreferrer noopener" target="_blank"><code data-sourcepos="137:5-137:14">webservice</code> chart</a>.</li>
</ul>
<h3 data-sourcepos="139:1-139:11" dir="auto">
<a href="#workers" aria-hidden="true" class="anchor" id="user-content-workers"></a>Workers</h3>
<p data-sourcepos="141:1-144:146" dir="auto">The recommended number of Puma workers largely depends on CPU and memory capacity.
By default, the Linux package uses the recommended number of workers.
For more information about how this number is calculated,
see <a data-sourcepos="144:5-144:145" href="https://gitlab.com/gitlab-org/omnibus-gitlab/-/blob/master/files/gitlab-cookbooks/gitlab/libraries/puma.rb?ref_type=heads#L46-69" rel="nofollow noreferrer noopener" target="_blank"><code data-sourcepos="144:7-144:13">puma.rb</code></a>.</p>
<p data-sourcepos="146:1-147:32" dir="auto">A node must never have fewer than two Puma workers.
For example, a node should have:</p>
<ul data-sourcepos="149:1-154:0" dir="auto">
<li data-sourcepos="149:1-149:48">Two workers for 2 CPU cores and 8 GB of memory</li>
<li data-sourcepos="150:1-150:48">Two workers for 4 CPU cores and 4 GB of memory</li>
<li data-sourcepos="151:1-151:49">Four workers for 4 CPU cores and 8 GB of memory</li>
<li data-sourcepos="152:1-152:48">Six workers for 8 CPU cores and 8 GB of memory</li>
<li data-sourcepos="153:1-154:0">Eight workers for 8 CPU cores and 16 GB of memory</li>
</ul>
<p data-sourcepos="155:1-156:115" dir="auto">By default, each Puma worker is limited to 1.2 GB of memory.
You can <a data-sourcepos="156:9-156:87" href="../administration/operations/puma.md#reducing-memory-use">adjust this setting</a> in <code data-sourcepos="156:93-156:113">/etc/gitlab/gitlab.rb</code>.</p>
<p data-sourcepos="158:1-160:94" dir="auto">You can also increase the number of Puma workers, provided enough CPU and memory capacity is available.
More workers would reduce response times and improve the ability to handle parallel requests.
Run tests to verify the optimal number of workers for your <a data-sourcepos="160:60-160:93" href="install_methods.md">installation</a>.</p>
<h3 data-sourcepos="162:1-162:11" dir="auto">
<a href="#threads" aria-hidden="true" class="anchor" id="user-content-threads"></a>Threads</h3>
<p data-sourcepos="164:1-165:18" dir="auto">The recommended number of Puma threads depends on total system memory.
A node should use:</p>
<ul data-sourcepos="167:1-169:0" dir="auto">
<li data-sourcepos="167:1-167:69">One thread for an operating system with a maximum of 2 GB of memory</li>
<li data-sourcepos="168:1-169:0">Four threads for an operating system with more than 2 GB of memory</li>
</ul>
<p data-sourcepos="170:1-170:68" dir="auto">More threads would lead to excessive swapping and lower performance.</p>
<h2 data-sourcepos="172:1-172:8" dir="auto">
<a href="#redis" aria-hidden="true" class="anchor" id="user-content-redis"></a>Redis</h2>
<p data-sourcepos="174:1-175:45" dir="auto"><a data-sourcepos="174:1-174:26" href="https://redis.io/" rel="nofollow noreferrer noopener" target="_blank">Redis</a> stores all user sessions and background tasks
and requires about 25 kB per user on average.</p>
<p data-sourcepos="177:1-179:103" dir="auto">In GitLab 16.0 and later, Redis 6.x or 7.x is required.
For more information about end-of-life dates, see the
<a data-sourcepos="179:1-179:102" href="https://redis.io/docs/latest/operate/rs/installing-upgrading/product-lifecycle/" rel="nofollow noreferrer noopener" target="_blank">Redis documentation</a>.</p>
<p data-sourcepos="181:1-181:10" dir="auto">For Redis:</p>
<ul data-sourcepos="183:1-186:0" dir="auto">
<li data-sourcepos="183:1-184:33">Use a standalone instance (with or without high availability).
Redis Cluster is not supported.</li>
<li data-sourcepos="185:1-186:0">Set the <a data-sourcepos="185:11-185:117" href="../administration/redis/replication_and_failover_external.md#setting-the-eviction-policy">eviction policy</a> as appropriate.</li>
</ul>
<h2 data-sourcepos="187:1-187:10" dir="auto">
<a href="#sidekiq" aria-hidden="true" class="anchor" id="user-content-sidekiq"></a>Sidekiq</h2>
<p data-sourcepos="189:1-191:45" dir="auto"><a data-sourcepos="189:1-189:31" href="https://sidekiq.org/" rel="nofollow noreferrer noopener" target="_blank">Sidekiq</a> uses a multi-threaded process for background jobs.
This process initially consumes more than 200 MB of memory
and might grow over time due to memory leaks.</p>
<p data-sourcepos="193:1-194:59" dir="auto">On a very active server with more than 10,000 billable users,
the Sidekiq process might consume more than 1 GB of memory.</p>
<h2 data-sourcepos="196:1-196:13" dir="auto">
<a href="#prometheus" aria-hidden="true" class="anchor" id="user-content-prometheus"></a>Prometheus</h2>
<p data-sourcepos="198:1-199:55" dir="auto">By default, <a data-sourcepos="198:13-198:47" href="https://prometheus.io" rel="nofollow noreferrer noopener" target="_blank">Prometheus</a> and its related exporters are enabled to monitor GitLab.
These processes consume approximately 200 MB of memory.</p>
<p data-sourcepos="201:1-202:86" dir="auto">For more information, see
<a data-sourcepos="202:1-202:85" href="../administration/monitoring/prometheus/index.md">monitoring GitLab with Prometheus</a>.</p>
<h2 data-sourcepos="204:1-204:25" dir="auto">
<a href="#supported-web-browsers" aria-hidden="true" class="anchor" id="user-content-supported-web-browsers"></a>Supported web browsers</h2>
<p data-sourcepos="206:1-206:43" dir="auto">GitLab supports the following web browsers:</p>
<ul data-sourcepos="208:1-213:0" dir="auto">
<li data-sourcepos="208:1-208:63"><a data-sourcepos="208:3-208:63" href="https://www.mozilla.org/en-US/firefox/new/" rel="nofollow noreferrer noopener" target="_blank">Mozilla Firefox</a></li>
<li data-sourcepos="209:1-209:49"><a data-sourcepos="209:3-209:49" href="https://www.google.com/chrome/" rel="nofollow noreferrer noopener" target="_blank">Google Chrome</a></li>
<li data-sourcepos="210:1-210:68"><a data-sourcepos="210:3-210:68" href="https://www.chromium.org/getting-involved/dev-channel/" rel="nofollow noreferrer noopener" target="_blank">Chromium</a></li>
<li data-sourcepos="211:1-211:47"><a data-sourcepos="211:3-211:47" href="https://www.apple.com/safari/" rel="nofollow noreferrer noopener" target="_blank">Apple Safari</a></li>
<li data-sourcepos="212:1-213:0"><a data-sourcepos="212:3-212:68" href="https://www.microsoft.com/en-us/edge?form=MA13QK" rel="nofollow noreferrer noopener" target="_blank">Microsoft Edge</a></li>
</ul>
<p data-sourcepos="214:1-214:16" dir="auto">GitLab supports:</p>
<ul data-sourcepos="216:1-218:0" dir="auto">
<li data-sourcepos="216:1-216:54">The two most recent major versions of these browsers</li>
<li data-sourcepos="217:1-218:0">The current minor version of a supported major version</li>
</ul>
<p data-sourcepos="219:1-219:75" dir="auto">Running GitLab with JavaScript disabled in these browsers is not supported.</p>
<h2 data-sourcepos="221:1-221:17" dir="auto">
<a href="#related-topics" aria-hidden="true" class="anchor" id="user-content-related-topics"></a>Related topics</h2>
<ul data-sourcepos="223:1-224:50" dir="auto">
<li data-sourcepos="223:1-223:66"><a data-sourcepos="223:3-223:66" href="https://docs.gitlab.com/runner/install/" rel="nofollow noreferrer noopener" target="_blank">Install GitLab Runner</a></li>
<li data-sourcepos="224:1-224:50"><a data-sourcepos="224:3-224:50" href="../security/index.md">Secure your installation</a></li>
</ul> </div> </main> </div> </div> </div> <script> //<![CDATA[ if ('loading' in HTMLImageElement.prototype) { document.querySelectorAll('img.lazy').forEach(img => { img.loading = 'lazy'; let imgUrl = img.dataset.src; // Only adding width + height for avatars for now if (imgUrl.indexOf('/avatar/') > -1 && imgUrl.indexOf('?') === -1) { const targetWidth = img.getAttribute('width') || img.width; imgUrl += `?width=${targetWidth}`; } img.src = imgUrl; img.removeAttribute('data-src'); img.classList.remove('lazy'); img.classList.add('js-lazy-loaded'); img.dataset.testid = 'js-lazy-loaded-content'; }); } //]]> </script> <script> //<![CDATA[ gl = window.gl || {}; gl.experiments = {}; //]]> </script> </body> </html>