Apache-2.4

我的 nextcloud 伺服器使用太多 RAM (apache)

  • October 22, 2021

我正在使用具有以下配置的 Apache:

Timeout 60
KeepAlive On
MaxKeepAliveRequests 100
<FilesMatch \.php$>
       SetHandler "proxy:unix:/var/run/php/php7.4-fpm.sock|fcgi://localhost/"
</FilesMatch>
HostnameLookups Off
<Directory />
       Options FollowSymLinks
       AllowOverride None
       Require all denied
</Directory>

<Directory /usr/share>
       AllowOverride None
       Require all granted
</Directory>

<Directory /var/www/>
       Options Indexes FollowSymLinks
       AllowOverride None
       Require all granted
</Directory>
<Directory /var/www/html/>
  Options +FollowSymlinks
  AllowOverride All
</Directory>
<IfModule mod_expires.c>
ExpiresActive On
FileETag None
ExpiresByType text/javascript "access plus 1 month"
ExpiresByType text/x-javascript "access plus 1 month"
ExpiresByType application/javascript "access plus 1 month"
ExpiresByType text/html "access plus 1 month"
</IfModule>

<IfModule worker.c>
StartServers 2
MaxClients 50
MinSpareThreads 1
MaxSpareThreads 2
ThreadsPerChild 15
MaxRequestsPerChild 0
</IfModule>

<IfModule prefork.c>
         StartServers          2
         MinSpareServers       1
         MaxSpareServers       2
         MaxClients           60
         MaxRequestsPerChild 1000
</IfModule>

然後這是我的 external.conf(來自 varnish 的流量將被加密的地方):

<VirtualHost *:443>
       Protocols h2 http/1.1
       ServerName cloud.privacyy.ch
       ErrorLog              /var/log/apache2/external-https_error.log
       CustomLog             /var/log/apache2/external-https_access.log combined

       Include /etc/letsencrypt/options-ssl-apache.conf
       SSLCertificateFile /etc/letsencrypt/live/cloud.privacyy.ch/fullchain.pem
       SSLCertificateKeyFile /etc/letsencrypt/live/cloud.privacyy.ch/privkey.pem


   ProxyPreserveHost       On
   ProxyPass               / http://127.0.0.1:8080/
   ProxyPassReverse        / http://127.0.0.1:8080/

   <IfModule mod_rewrite.c>
         RewriteEngine On
         RewriteRule ^/\.well-known/carddav https://%{SERVER_NAME}/remote.php/dav/ [R=301,L]
         RewriteRule ^/\.well-known/caldav https://%{SERVER_NAME}/remote.php/dav/ [R=301,L]
         #RewriteRule ^/\.aurora https://cloud.privacyy.ch/aurora-staefa.ch/ [R=301,L]                                                                                                                    
   </IfModule>

   Header set Cache-Control "max-age=84600, private"
   <FilesMatch "\.(js|css|php)$">
          Header set Cache-Control "max-age=63072000, private"
   </FilesMatch>


   Header always set Strict-Transport-Security "max-age=63072000; includeSubdomains"
   Header always set X-Content-Security-Policy "allow 'self';"
   Header always set x-xss-protection "1; mode=block"
   Header always set X-Robots-Tag "none"
   Header always set X-Download-Options "noopen"
   Header always set X-Permitted-Cross-Domain-Policies "none"
   Header set X-Content-Type-Options: "nosniff"
   Header set X-Frame-Options: "sameorigin"
   SSLCompression off
</VirtualHost>

這是 internal.conf:

<VirtualHost *:8181>
       protocols h2 http/1.1

   DocumentRoot /var/www/html
   <FilesMatch \.php$>
       SetHandler "proxy:unix:/run/php/php7.4-fpm.sock|fcgi://localhost/"
   </FilesMatch>

   <IfModule mod_headers.c>
           Header always set Strict-Transport-Security "max-age=15552000; includeSubDomains; preload"
   </IfModule>

      Header set Cache-Control "max-age=84600, public"
       <FilesMatch "\.(iso|mp3|mp4|m4a|mov)$">
        Header set Cache-Control "max-age=42300, private"
       </FilesMatch>
</VirtualHost>

請注意,我沒有在此處包含評論或喜歡日誌設置

當我使用網路瀏覽器下載任何東西時,apache 伺服器使用越來越多的記憶體(並且即使我不下載 12.3GB 文件也使用整個 12.3GB 交換空間)並且下載速度正在下降。使用 Nextcloud(桌面/手機)應用程序時也會發生同樣的情況

原始下載速度為 10MB/s

我啟用了以下 apache mods:

access_compat alias auth_basic authn_core authn_file authz_core authz_host authz_user autoindex deflate dir env expires fcgid filter headers http2 mime mpm_event negotiation pagespeed proxy proxy_balancer proxy_fcgi proxy_http reqtimeout rewrite setenvif slotmem_shm socache_shmcb ssl status unique_id

我正在使用 maria 數據庫(最近切換但沒有做太多)

Nextcloud 使用 redis-server 作為 php 記憶體,我已經使用 nextcloud 的推薦設置啟用了 opcache。我已經禁用它進行測試,但這並沒有解決問題。

Accessibility
1.8.0
Vorgestellt
Activity
2.15.0
Vorgestellt
Brute-force settings
2.2.0
Vorgestellt
Calendar
2.3.4
Vorgestellt
Camera RAW Previews
0.7.12
Checksum
1.1.2
Circles
22.1.1
Vorgestellt
Collaborative tags
1.12.0
Vorgestellt
Comments
1.12.0
Vorgestellt
Contacts
4.0.3
Vorgestellt
Contacts Interaction
1.3.0
Vorgestellt
Dashboard
7.2.0
Vorgestellt
Default encryption module
2.10.0
Vorgestellt
Deleted files
1.12.0
Vorgestellt
End-to-End Encryption
1.7.1
Vorgestellt
Federation
1.12.0
Vorgestellt
File sharing
1.14.0
Vorgestellt
Group folders
10.0.0
Vorgestellt
Log Reader
2.7.0
Vorgestellt
Mail
1.10.5
Vorgestellt
Maps
0.1.9
Vorgestellt
Metadata
0.14.0
Monitoring
1.12.0
Vorgestellt
Nextcloud announcements
1.11.0
Vorgestellt
Notes
4.1.1
Vorgestellt
Notifications
2.10.1
Vorgestellt
Password policy
1.12.0
Vorgestellt
PDF viewer
2.3.0
Vorgestellt
Photos
1.4.0
Vorgestellt
Privacy
1.6.0
Vorgestellt
Quota warning
1.11.0
Recognize
1.6.10
Registration
1.3.0
Right click
1.1.0
Vorgestellt 
Share by mail
1.12.0
Vorgestellt
Support
1.5.0
Vorgestellt
Talk
12.1.2
Vorgestellt
Text
3.3.0
Vorgestellt
Theming
1.13.0
Vorgestellt
Two-Factor Email
2.1.1
Update notification
1.12.0
Vorgestellt
Usage survey
1.10.0
Vorgestellt
User status
1.2.0
Vorgestellt
Versions
1.15.0
Vorgestellt
Video converter
1.0.3
Video player
1.11.0
Vorgestellt
Weather status
1.2.0
Vorgestellt

(呈現方式推薦)

只有 apache 使用那麼多 RAM - 其他一切都很好 此外,在我重新載入/重新啟動 apache 伺服器之前,這些東西不會從 RAM(&swap)中刪除

從瀏覽器下載時,下載停止在 383MB - 並且瀏覽器沒有說明要下載的文件有多大(Onedrive 也有這個問題,在較大的文件夾上下載速度低於 1MB/s,就像:未知剩餘時間- 已經下載了多少 - 下載速度)

我配置錯了什麼?或者是別的什麼?

我的伺服器是蘋果 macbook air 4GB RAM 2GHz - 2.2GHz(boost) Intel 多執行緒 2 核 cpu,xanmod 核心 如果缺少某些東西,請通知我一件事:如果沒有可用 RAM,earlyoom 會殺死 apache 伺服器另一件事:我在沒有 x-server 的 Ubuntu21.04 和 400MB RAM 使用量(如果沒有發生任何事情)

禁用 Modsecurity 身體掃描並繞過清漆記憶體進行下載

這是一個問題:https ://github.com/varnishcache/varnish-cache/issues/2964

引用自:https://serverfault.com/questions/1080787