Nextcloud Update von 21.x auf 22.x

Hallo,

beim Updaten einer nextcloud-Installation tritt immer wieder ein Fehler auf:

Starting code integrity check

Doctrine\DBAL\Exception\DriverException: An exception occurred while executing a query: SQLSTATE[08S01]: Communication link failure: 1153 Got a packet bigger than ‘max_allowed_packet’ bytes
Update failed

Es dauert etwa 5 Minuten, bis diese Meldung angezeigt wird.
WĂ€hrend dieser Zeit werden sehr viele LesevorgĂ€nge bei einem Datendurchsatz von etwa 140MB/s durchgefĂŒhrt.

In MySQL ist der Wert “max_allowed_packet” bereits auf “1073741824” eingestellt.
Ein höherer Wert wird nicht akzeptiert.

Das Update wird von einem Terminal aus mit dem folgendem Befehl ausgefĂŒhrt:

#!/bin/bash

phpini=/volume1/@appstore/PHP7.4/misc/php-fpm.ini
sudo -u http php74 -c $phpini -d memory_limit=-1 -d max_allowed_packet=-1 -f htdocs/occ upgrade

In der Datei php-fpm.ini steht folgendes:

[core]
sendmail_path = /usr/bin/ssmtp -t
ignore_repeated_source = 0
xmlrpc_error_number = 0
memory_limit = 128M
output_buffering = 4096
auto_globals_jit = 1
include_path = .:/usr/share/pear
log_errors = On
allow_url_fopen = 1
enable_dl = Off
upload_max_filesize = 32M
enable_post_data_reading = 1
ignore_user_abort = 0
display_startup_errors = 0
sys_temp_dir = /var/services/tmp
extension_dir = /usr/local/lib/php74/modules
register_argc_argv = Off
hard_timeout = 2
smtp_port = 25
realpath_cache_size = 4096K
default_socket_timeout = 60
html_errors = off
max_file_uploads = 20
max_input_nesting_level = 64
disable_classes =
default_mimetype = text/html
expose_php = Off
log_errors_max_len = 1024
post_max_size = 32M
report_memleaks = 1
variables_order = GPCS
short_open_tag = On
upload_tmp_dir = /var/services/tmp
max_execution_time = 240
docref_ext =
serialize_precision = -1
precision = 14
unserialize_max_depth = 4096
implicit_flush = 1
track_errors = 0
xmlrpc_errors = 0
SMTP = localhost
ignore_repeated_errors = 0
request_order = GP
allow_url_include = 0
disable_functions =
file_uploads = 1
docref_root =
max_input_time = 60
auto_detect_line_endings = 0
max_input_vars = 1000
report_zend_debug = 0
error_reporting = E_ALL & ~E_NOTICE & ~E_STRICT & ~E_DEPRECATED
default_charset = UTF-8
realpath_cache_ttl = 120

[pdo_mysql]
pdo_mysql.default_socket = /run/mysqld/mysqld.sock

[zlib]
zlib.output_compression = 0
zlib.output_compression_level = -1
zlib.output_handler =

[mailparse]
mailparse.def_charset = us-ascii

[dba]
dba.default_handler = flatfile

[intl]
intl.use_exceptions = 0
intl.error_level = 0

[zend]
zend.multibyte = 0
zend.assertions = 1
zend.signal_check = 0
zend.detect_unicode = 1
zend.exception_ignore_args = 0
zend.enable_gc = 1

[phar]
phar.readonly = Off
phar.cache_list =
phar.require_hash = 1

[syslog]
syslog.facility = LOG_USER
syslog.filter = no-ctrl
syslog.ident = php

[imagick]
imagick.locale_fix = 0
imagick.skip_version_check = 1
imagick.progress_monitor = 0

[gd]
gd.jpeg_ignore_warning = 1

[apc]
apc.enabled = 1
apc.coredump_unmap = 0
apc.shm_size = 32M
apc.mmap_file_mask =
apc.entries_hint = 4096
apc.use_request_time = 1
apc.smart = 0
apc.ttl = 0
apc.shm_segments = 1
apc.enable_cli = 0
apc.serializer = php
apc.gc_ttl = 3600
apc.slam_defense = 0

[curl]
curl.cainfo =

[pcre]
pcre.recursion_limit = 100000
pcre.jit = 0
pcre.backtrack_limit = 1000000

[iconv]
iconv.input_encoding =
iconv.output_encoding =
iconv.internal_encoding =

[xdebug]
xdebug.show_local_vars = 0
xdebug.trace_format = 0
xdebug.gc_stats_output_dir = /tmp
xdebug.remote_addr_header =
xdebug.profiler_append = 0
xdebug.profiler_enable_trigger = 0
xdebug.trace_enable_trigger = 0
xdebug.cli_color = 0
xdebug.collect_params = 0
xdebug.dump_once = 1
xdebug.gc_stats_output_name = gcstats.%p
xdebug.overload_var_dump = 2
xdebug.var_display_max_children = 128
xdebug.remote_connect_back = 0
xdebug.halt_level = 0
xdebug.dump_undefined = 0
xdebug.trace_enable_trigger_value =
xdebug.profiler_enable = 0
xdebug.remote_enable = 0
xdebug.show_error_trace = 0
xdebug.file_link_format =
xdebug.remote_host = localhost
xdebug.remote_cookie_expire_time = 3600
xdebug.collect_vars = 0
xdebug.remote_timeout = 200
xdebug.profiler_enable_trigger_value =
xdebug.trace_output_name = trace.%c
xdebug.scream = 0
xdebug.remote_log =
xdebug.force_display_errors = 0
xdebug.auto_trace = 0
xdebug.trace_output_dir = /var/services/tmp
xdebug.collect_assignments = 0
xdebug.trace_options = 0
xdebug.var_display_max_data = 512
xdebug.max_nesting_level = 256
xdebug.profiler_output_name = cachegrind.out.%p
xdebug.remote_log_level = 7
xdebug.dump_globals = 1
xdebug.remote_port = 9000
xdebug.show_mem_delta = 0
xdebug.collect_includes = 1
xdebug.idekey =
xdebug.max_stack_frames = -1
xdebug.collect_return = 0
xdebug.profiler_output_dir = /var/services/tmp
xdebug.coverage_enable = 1
xdebug.var_display_max_depth = 3
xdebug.default_enable = 1
xdebug.show_exception_trace = 0
xdebug.remote_mode = req
xdebug.gc_stats_enable = 0
xdebug.filename_format =
xdebug.force_error_reporting = 0
xdebug.remote_autostart = 0

[cli]
cli.pager =
cli.prompt = \b \>

[exif]
exif.decode_jis_intel = JIS
exif.decode_unicode_motorola = UCS-2BE
exif.encode_unicode = ISO-8859-15
exif.decode_jis_motorola = JIS
exif.decode_unicode_intel = UCS-2LE
exif.encode_jis =

[pgsql]
pgsql.max_links = -1
pgsql.allow_persistent = 1
pgsql.log_notice = 0
pgsql.auto_reset_persistent = 0
pgsql.ignore_notice = 0
pgsql.max_persistent = -1

[mbstring]
mbstring.encoding_translation = 0
mbstring.regex_retry_limit = 1000000
mbstring.regex_stack_limit = 100000
mbstring.language = neutral
mbstring.func_overload = 0
mbstring.http_output_conv_mimetypes = "^(text/|application/xhtml\+xml)"
mbstring.strict_detection = 0

[ldap]
ldap.max_links = -1

[sqlite3]
sqlite3.defensive = 1

[mail]
mail.add_x_header = 0

[soap]
soap.wsdl_cache_limit = 5
soap.wsdl_cache_ttl = 86400
soap.wsdl_cache_dir = /var/services/tmp
soap.wsdl_cache_enabled = 1
soap.wsdl_cache = 1

[bcmath]
bcmath.scale = 0

[assert]
assert.exception = 0
assert.warning = 1
assert.bail = 0
assert.quiet_eval = 0
assert.active = 1

[date]
date.default_latitude = 31.7667
date.sunrise_zenith = 90.583333
date.sunset_zenith = 90.583333
date.default_longitude = 35.2333

[mysqli]
mysqli.reconnect = 0
mysqli.default_socket = /run/mysqld/mysqld.sock
mysqli.max_links = -1
mysqli.max_persistent = -1
mysqli.allow_local_infile = 0
mysqli.rollback_on_cached_plink = 0
mysqli.default_port = 3306
mysqli.allow_persistent = 1

[user_ini]
user_ini.cache_ttl = 300
user_ini.filename = .user.ini

[imap]
imap.enable_insecure_rsh = 0

[url_rewriter]
url_rewriter.tags = "a=href,area=href,frame=src,input=src,form=fakeentry"
url_rewriter.hosts =

[mysqlnd]
mysqlnd.net_read_buffer_size = 32768
mysqlnd.net_read_timeout = 86400
mysqlnd.collect_statistics = 1
mysqlnd.collect_memory_statistics = 0
mysqlnd.net_cmd_buffer_size = 4096
mysqlnd.mempool_default_size = 16000
mysqlnd.fetch_data_copy = 0
mysqlnd.log_mask = 0

[filter]
filter.default = unsafe_raw

[session]
session.cookie_samesite =
session.auto_start = 0
session.cache_limiter = nocache
session.trans_sid_tags = "a=href,area=href,frame=src,form="
session.name = PHPSESSID
session.upload_progress.name = PHP_SESSION_UPLOAD_PROGRESS
session.sid_length = 32
session.use_only_cookies = 0
session.serialize_handler = php
session.cookie_path = /
session.gc_probability = 1
session.cache_expire = 180
session.cookie_secure = 0
session.upload_progress.freq = 1%
session.gc_divisor = 1000
session.upload_progress.min_freq = 1
session.upload_progress.prefix = upload_progress_
session.use_strict_mode = 0
session.cookie_httponly = 0
session.gc_maxlifetime = 1440
session.upload_progress.enabled = 1
session.upload_progress.cleanup = 1
session.referer_check =
session.lazy_write = 1
session.save_handler = files
session.cookie_domain =
session.sid_bits_per_character = 4
session.save_path = /var/services/tmp
session.cookie_lifetime = 0
session.trans_sid_hosts =
session.use_cookies = 1
session.use_trans_sid = 0

[highlight]
highlight.default = #0000BB
highlight.keyword = #007700
highlight.html = #000000
highlight.comment = #FF8000
highlight.string = #DD0000

[arg_separator]
arg_separator.input = "&"
arg_separator.output = "&"

[opcache]
opcache.optimization_level = 0x7fffbfff
opcache.restrict_api =
opcache.revalidate_path = 0
opcache.file_cache_only = 0
opcache.file_update_protection = 2
opcache.interned_strings_buffer = 8
opcache.opt_debug_level = 0
opcache.log_verbosity_level = 1
opcache.force_restart_timeout = 180
opcache.validate_permission = 0
opcache.huge_code_pages = 0
opcache.enable = 1
opcache.dups_fix = 0
opcache.save_comments = 1
opcache.enable_cli = 0
opcache.preferred_memory_model =
opcache.preload =
opcache.use_cwd = 1
opcache.blacklist_filename =
opcache.validate_root = 0
opcache.memory_consumption = 128
opcache.max_accelerated_files = 10000
opcache.validate_timestamps = 1
opcache.protect_memory = 0
opcache.max_file_size = 0
opcache.enable_file_override = 0
opcache.lockfile_path = /tmp
opcache.preload_user =
opcache.file_cache_consistency_checks = 1
opcache.error_log =
opcache.max_wasted_percentage = 5
opcache.revalidate_freq = 2
opcache.consistency_checks = 0

Der Webserver nginx lÀuft auf einer Synology NAS Diskstation.

Zuvor lief nextcloud auf einem Debian-System mit einem nginx-Webserver erfolgreich. Von diesem System wurde von nexctcloud inkl. Datenbank ein Backup erstellt und dieses in das neuen System wieder eingestellt.

Weiß jemand wie die Fehlerursache eingegrenzt werden kann?

AuffÀllig ist, dass in der Datenbank die Tabelle oc_filecache mit 27MB (etwa 81.624 DatensÀtze) ziemlich umfangreich ist. Können alle DatensÀtze in der Tabelle oc_filecache entfernt werden? Die Tabelle oc_fiolecache_extended ist mit 17123 DatensÀtzen nicht so umfangreich.

Also ich update immer mit
sudo -u www-data php updater/updater.phar

Hierbei werden einige Prozesse durchlaufen, die vor deinem occ upgrade kommen. Vielleicht kannst du es bei dir anpassen und mal ausprobieren.

Leider ist die Anleitung etwas doof geschrieben. Ich habe wegen eines anderen Threads daher auch heute ein Issue bzgl. der Anleitung mal erstellt.

https://docs.nextcloud.com/server/latest/admin_manual/maintenance/update.html

Gleiches Problem hier, Fehlermeldung
Doctrine\DBAL\Exception\DriverException: An exception occurred while executing a query: SQLSTATE[08S01]: Communication link failure: 1153 Got a packet bigger than ‘max_allowed_packet’ bytes

Jetzt steckt er im maintenance Mode fest.

Das habe ich bereits ausgefĂŒhrt:
https://docs.nextcloud.com/server/20/admin_manual/configuration_database/mysql_4byte_support.html?highlight=byte

Problem besteht weiterhin.

Ich nutze Mariadb 10.3.29 auf ner Synology diskstation und der Nextcloud lÀuft in einem Docker Container (offizielles Image)

Solved:

set global net_buffer_length=1000000; 
set global max_allowed_packet=1000000000; 

Did the trick :slight_smile: