seafile.conf

seafile.conf 配置
重要提示:本配置文件中的每个条目都是区分大小写的。
修改后需要重启 seafile 和 seahub 服务才能生效:
./seahub.shrestart
./seafile.shrestart
存储配额设置
你可以为所有用户设置默认配额(例如 2GB),在 seafile.conf 中添加:
[quota]
#默认用户配额(单位GB,只能为整数)
default=2
此设置适用于所有用户。如果想为特定用户设置配额,可登录 Seahub 网站以管理员身份在 “系统管理员” 页面设置。
从 Pro 10.0.9 版本起,你可以设置库中允许的最大文件数量,当超过限制时无法上传文件。默认无限制:
[quota]
library_file_limit=100000
默认历史版本长度限制
如果不想保留所有文件的历史版本,可设置默认历史版本保留天数:
[history]
keep_days=<保留的天数>
默认回收站过期时间
对于删除的资料库,不会被立即彻底清除。它们会被临时存放到“已删除的资料库”和“系统管理”中的“资料库回收站”中,默认会在30天后自动清除这些数据。如果需要修改保留天数:
[library_trash]
expire_days=60
系统回收站
Seafile 使用系统回收站,删除的库将移动至此,便于管理员恢复意外删除的库。
Seafile fileserver
Seafile fileserver的配置在文件seafile.conf 的[fileserver]部分
[fileserver]
#fileserver的绑定地址
#如果未使用代理部署,则默认为0.0.0.0:无访问限制
#设置为127.0.0.1,如果与本地代理一起使用:仅允许本地访问。
host=127.0.0.1
#Seafiletcp端口(不要修改该设置)
port=8082
从社区版 6.2 和企业版 6.1.9 开始,你可以设置用于服务 http 请求的线程数。默认值是10个线程。这个默认值适用于大多数应用场景。
[fileserver]
worker_threads=15
上传/下载大小限制(使用 Go fileserver 时,没有下载限制):
[fileserver]
#上传文件最大限制为200M,默认是无限制.
max_upload_size=200

#最大下载目录限制为200M,默认是100M.
max_download_dir_size=200
通过Web界面或客户端中的云端浏览器上传文件后,需要将其分成固定大小的块并存储到后端存储。我们称这个过程为“索引”。默认情况下,文件服务器使用1个线程顺序索引文件并逐个存储块。这适用与大多数情况。但是如果您使用的是 S3/Ceph/Swift 后端,则在存储后端可能会有更多带宽来并行存储多个块。我们提供了一个选项来定义索引中并发线程的数量;
[fileserver]
max_indexing_threads=10
当用户在Web界面上传文件时,文件服务器将文件分割成固定大小的块。Web上传文件的默认块大小为8MB。块大小可以在这里设置。
[fileserver]
#设置块大小为2MB
fixed_block_size=2
当用户上传文件时,文件服务器分配一个令牌来授权上传操作。该令牌默认有效期1小时。通过WAN上传大型文件时,上传时间可能会超过1小时,您可以将令牌到期时间更改为更大的值。
[fileserver]
#设置上传时间限制为3600s
web_token_expire_time=3600
您可以从Web界面下载文件夹为zip存档,但是Windows上的一些zip软件不支持UTF-8,在这种情况下,您可以使用"windows_encoding"设置来解决此问题。
[zip]
#下载的zip文件的文件名编码。
windows_encoding=iso-8859-1
“ httptemp”目录包含在文件上载和zip下载期间创建的临时文件。在某些情况下,文件传输中断后,临时文件不会被清除。从7.1.5版本开始,文件服务器将定期扫描“ httptemp”目录以删除很久以前创建的文件。
[fileserver]
#临时文件在多长时间后会被删除,单位为秒。默认为3天。
http_temp_file_ttl=x
#文件扫描间隔,单位为秒。默认为1小时。
http_temp_scan_interval=x
自 Pro 7.1.16 和 Pro 8.0.3 中的新功能:您可以设置 Seafile 客户端可同步的资料库中包含的最大文件数。默认值为 100000。下载资料库时,Seafile 客户端会请求 fs id 列表,您可以通过 fs_id_list_request_timeout 选项控制请求的超时时间,默认为 5 分钟。添加这两个选项是为了防止长时间的 fs-id 列表请求导致服务器超载。
自专业版 8.0.4 起,您可以将这两个选项都设置为-1,以允许无限制的大小和超时。
[fileserver]
max_sync_file_count=100000
fs_id_list_request_timeout=300
如果您使用对象存储作为存储后端,当一个大文件频繁下载时,需要从存储后端获取相同的块到 Seafile 服务器。这可能会浪费带宽并导致内部网络的高负载。从 Seafile Pro 8.0.5 版本开始,我们添加了块缓存来改善这种情况。请注意,此配置仅对通过网页或 API 下载文件有效,对同步文件无效。
  • 要启用此功能,请在 [fileserver] 组中设置 use_block_cache 选项。默认情况下未启用。
  • block_cache_size_limit 选项用于限制缓存的大小。其默认值为 10GB。这些块缓存在 seafile-data/block-cache 目录中。当缓存文的总大小超过限制时,seaf-server 将清理旧文件,直到大小减少到限制的 70%。清理间隔为 5 分钟。您必须很好地估计缓存目录需要多少空间。否则,在频繁下载时,这个目录会很快被填满。
  • block_cache_file_types 配置用于选择缓存的文件类型。 block_cache_file_types 默认值为 mp4;mov。
use_block_cache=true
#将块缓存大小限制设置为100MB
block_cache_size_limit=100
#针对特定的文件后缀使用缓存,默认mp4和mov格式
block_cache_file_types=mp4;mov
当有大量文件通过网页、API上传时,基于文件内容计算块的哈希值会有很大的计算开销。从Seafile Pro 9.0.6版本开始,您可以通过增加skip_block_hash选项来使用一个随机的字符串作为块ID,从而减少计算开销。注意,这个选项会影响 fsck 程序,使得无法检查块的内容是否损坏。因此设置了这个选项后,执行 fsck 的时候需要指定 --shallow 选项,不验证块内容的完整性。
[fileserver]
skip_block_hash=true
如果你想在上传文件时限制文件类型,从 Pro 10.0.0 版本开始,您可以在 [fileserver] 组中设置 file_ext_white_list 选项。该选项是一个文件类型列表,只有列表中的文件类型才允许上传。默认情况下不启用。
[fileserver]
file_ext_white_list=md;mp4;mov
从 10.0.1 版本开始,使用 go fileserver 时,您可以在 [fileserver] 组中设置 upload_limit 和 download_limit 选项,以限制文件上传和下载的速度。默认情况下是不启用的。
[fileserver]
#单位是KB/s。
upload_limit=100
download_limit=100
自 Seafile 11.0.7 Pro 版本起,你可以要求文件服务器通过 Web API 对每个上传的文件进行病毒检查。在 病毒扫描 处查找更多选项。
[fileserver]
check_virus_on_web_upload=true
客户端同步后验证文件块完整性(12.0.4 起,默认启用):
[fileserver]
verify_client_blocks_after_sync=true
数据库配置
数据库的配置存储在 [database]部分。(从11.0版本开始,不再支持 SQLite)
[database]
type=mysql
host=127.0.0.1
user=root
password=root
db_name=seafile_db
connection_charset=utf8
max_connections=100
当Seafile务器配置为使用 MySQL 时,默认连接池大小为 100,这对于大多数用例来说应该足够了。
自 Seafile 10.0.2 版本起,可以通过添加以下配置选项来启用与 MySQL 服务器的加密连接。
[database]
use_ssl=true
skip_verify=false
ca_path=/etc/mysql/ca.pem
当将use_ssl设置为 true 且将skip_verify设置为 false 时,它将通过在ca_path中配置的 CA 检查 MySQL 服务器证书是否合法。ca_path是用于签署 MySQL 服务器证书的受信任 CA 证书路径。当skip_verify为 true 时,无需添加ca_path选项。此时不会验证 MySQL 服务器证书。
文件锁定(仅专业版)
Seafile Pro 服务器文件锁会在一段时间后自动过期,以防止被锁定的文件锁定时间过长,过期时间可以在 seafile.conf 文件中进行调整。
[file_lock]
default_expire_hours=6#默认是12小时
自 Seafile-pro-9.0.6 版本起,可以为获取锁定文件添加缓存(减少同步客户端导致的服务器负载),自专业版 12 起,此选项默认启用。
[file_lock]
use_locked_file_cache=true
与此同时,您需要配置memcache来使该缓存生效。
[memcached]
memcached_options=--SERVER=<theIPofMemcachedServer>--POOL-MIN=10--POOL-MAX=100
存储后端
你可以将 Seafile 配置为使用各种类型的对象存储后端
你也可以将 Seafile 配置为同时使用多存储后端。
集群
当你使用集群部署 Seafile 时,应添加以下配置(从12版本开始,如果你使用的是docker部署的集群,这个选项不再需要):
[cluster]
enabled=true
开启 Slow Log
Seafile-pro-6.3.10 开始,Seafile增加了 seaf-server 的 RPC 慢请求查询日志,便于管理员更好的做性能分析。
该功能是默认开启的,如果您想要自主配置相关选项,可以在 seafile.conf 中添加如下配置:
[slow_log]
#默认为true
enable_slow_log=true
#所有慢请求日志阈值的单位为毫秒。
#默认为5000毫秒,这意味着只有处理超过5000毫秒的RPC查询才会被记录。
rpc_slow_threshold=5000
在 logs/slow_logs 目录下,可以找到 seafile_slow_rpc.log;并且该日志文件支持使用 log-rotate做日志切割,只需要向 seaf-server 进程发送 SIGUSR2 信号,进程就会关闭并重新打开日志文件。
自 9.0.2 Pro 起,触发日志旋转的信号已更改为SIGUSR1 。此信号将触发 seaf-server 打开的所有日志文件的轮换。您应相应地更改日志轮换设置。
启用访问日志
尽管Nginx记录了所有具有某些详细信息的请求,例如url,响应代码,上游进程时间,但有时需要有更多关于请求的上下文,例如每个请求的用户ID。此类信息只能从文件服务器本身记录。从 9.0.2 Pro 开始,访问日志功能已添加到文件服务器。
要启用访问日志,请将以下选项添加到 seafile.conf
[fileserver]
#默认值为false。如果启用,fileserver-access.log将被写入日志目录。
enable_access_log=true
日志格式如下:
starttime-userid-url-responsecode-processtime
可用于SIGUSR1触发日志轮换。
Go Fileserver
Seafile 9.0 引入了一个用 Go 实现的fileserver。要启用它,你可以添加以下配置到seafile.conf中:
[fileserver]
use_go_fileserver=true
Go fileserver与用 C 语言实现的传统文件服务器相比有三个优势:
  1. 同步包含大量文件的库时性能更好。使用 C fileserver时,同步大型库可能会耗尽服务器中的所有工作线程,从而使服务变慢。有一个配置选项max_sync_file_count可用于限制要同步的库的大小。默认值为 10 万。使用 Go fileserver时,你可以将此选项设置为更高的数字,例如 100 万。
  2. 即时下载压缩文件夹,并且对下载文件夹的大小没有限制。对于 C fileserver必须先为下载的文件夹创建一个 zip 文件,然后将其发送给客户端。对于 Go fileserver,可以在传输给客户端的同时创建 zip 文件。因此,Go fileserver不再需要配置项max_download_dir_size
  3. 自 10.0 版本起,你还可以设置上传 / 下载速率的限制。
Go fileserver在内存中缓存文件系统对象。一方面,它避免了对重复访问的对象进行重复创建和销毁;另一方面,它也会减慢对象释放的速度,这将防止 Go 的垃圾回收机制消耗过多的 CPU 时间。你可以通过以下选项设置文件系统缓存所使用的内存大小。
[fileserver]
#单位:MB.默认是2G.
fs_cache_limit=100
Go Fileserver性能分析
从Seafile 9.0.7开始,您可以增加下面的选项来开启 go fileserver 的 profile 功能。
#profile_password是必须配置的,您可以按需修改。
[fileserver]
enable_profiling=true
profile_password=8kcUz1I2sLaywQhCRtn2x1
这个接口可以通过 Go 语言提供的pprof工具来使用。pprof的详细信息,请参阅 https://pkg.go.dev/net/http/pprof。 请注意,您在使用以下命令之前,必须先安装 Go。 password 参数应该与您在配置中设置的相匹配。
gotoolpprofhttp://localhost:8082/debug/pprof/heap?password=8kcUz1I2sLaywQhCRtn2x1
gotoolpprofhttp://localhost:8082/debug/pprof/profile?password=8kcUz1I2sLaywQhCRtn2x1
seafile.conf 配置
重要提示:本配置文件中的每个条目都是区分大小写的。
修改 seafile.conf 后,需要重启相关 Seafile 服务才能使配置生效。使用 Docker 部署时,需要重启 Seafile 容器。
存储配额设置
可以为所有用户设置默认存储配额,例如 2 GB。只需在 seafile.conf 中添加以下配置:
[quota]
# 默认用户配额,单位为 GB,仅支持整数
default = 2
此设置对所有用户生效。如果需要为某个特定用户设置配额,可以使用管理员账户登录 Seahub 网站,然后在“系统管理”(System Admin)页面中进行设置。
从 Seafile 专业版 10.0.9 开始,可以设置单个资料库允许包含的最大文件数量。达到上限后,将无法继续向该资料库上传文件。默认情况下不限制文件数量。
[quota]
library_file_limit = 100000
默认历史版本长度限制
如果不希望保留文件的全部修改历史,可以为所有资料库设置默认的历史版本保留期限。
[history]
keep_days = <保留的天数>
其中 <保留的天数> 是占位符,实际配置时应替换为整数,例如 keep_days = 30。
默认回收站过期时间
资料库回收站的默认自动清理期限为 30 天。可以添加以下配置进行修改:
[library_trash]
expire_days = 60
Seafile fileserver
Seafile 文件服务器(fileserver)的设置放在 seafile.conf 的 [fileserver] 段中。
工作线程数
可以设置用于处理 HTTP 请求的工作线程数量。默认值为 10,对于大多数使用场景而言,这个值已经比较合适。
[fileserver]
worker_threads = 15
上传与下载大小限制
可以修改上传文件的最大大小,以及下载文件夹时的最大大小。
[fileserver]
# 将单个上传文件的最大大小设置为 200 MB。
# 如果不配置,则不限制上传文件的大小。
max_upload_size=200
# 将下载文件夹的最大大小设置为 200 MB。
# 默认值为 100 MB。
max_download_dir_size=200
文件索引的并发线程数
用户通过网页界面或客户端中的云端文件浏览器上传文件后,文件需要被切分为固定大小的数据块,并保存到存储后端。这个过程称为索引(indexing)。
默认情况下,文件服务器使用 1 个线程顺序执行索引操作,逐个存储数据块。这适用于大多数场景。如果使用 S3、Ceph 或 Swift 存储后端,则可能拥有足够的存储带宽来并行保存多个数据块。
可以通过以下配置指定索引操作的并发线程数量:
[fileserver]
max_indexing_threads = 10
注意: 此选项控制的是单个文件执行索引时使用的线程数量,而不是同时上传的文件数量。如果有 N 个文件同时上传,最多可能有 max_indexing_threads × N 个线程用于这些文件的索引操作。
网页上传的文件块大小
用户通过网页界面(Seahub)上传文件时,文件服务器会将其切分为固定大小的数据块。网页上传文件的数据块默认大小为 8 MB,可以通过以下配置调整:
[fileserver]
# 将数据块大小设置为 2 MB
fixed_block_size=2
网页上传令牌的有效期
用户通过网页界面上传文件时,文件服务器会分配一个用于授权上传操作的令牌(Token)。该令牌默认有效期为 1 小时。
通过广域网(WAN)上传大文件时,上传时间可能超过 1 小时。可以将令牌的有效期调整得更长。
[fileserver]
# 将上传令牌有效期设置为 3600 秒
web_token_expire_time=3600
下载 ZIP 压缩包的文件名编码
可以从 Seahub 将文件夹下载为 ZIP 压缩包。不过,Windows 上的某些解压缩软件不支持 UTF-8 文件名编码。在这种情况下,可以使用 windows_encoding 选项解决编码兼容性问题。
[zip]
# 下载的 ZIP 文件中的文件名编码
windows_encoding = iso-8859-1
临时文件清理
httptemp 目录存放上传文件和下载 ZIP 压缩包过程中创建的临时文件。如果文件传输中断,有些临时文件可能未被及时清理。
从 Seafile 7.1.5 开始,文件服务器会定期扫描 httptemp 目录,删除创建时间较早的临时文件。
[fileserver]
# 临时文件在多长时间后被删除,单位为秒;默认为 3 天。
http_temp_file_ttl = x
# 扫描临时文件的时间间隔,单位为秒;默认为 1 小时。
http_temp_scan_interval = x
其中 x 为占位符,需要替换成实际秒数,例如 3 天为 259200 秒、1 小时为 3600 秒。
客户端同步文件数及 fs-id-list 请求超时
可以设置 Seafile 客户端能够同步的单个资料库的最大文件数量,默认值为 100000。
下载资料库时,Seafile 客户端会向服务器请求文件系统 ID 列表(fs-id-list)。可以通过 fs_id_list_request_timeout 控制该请求的超时时间,默认值为 5 分钟。
这两个选项用于防止耗时过长的 fs-id-list 请求给服务器造成过高负载。两个选项都可以设置为 -1,以取消数量限制和超时时间限制。
[fileserver]
max_sync_file_count = 100000
fs_id_list_request_timeout = 300
数据块缓存(专业版)
如果使用对象存储作为存储后端,当一个大文件被频繁下载时,Seafile 服务器可能需要不断从存储后端读取相同的数据块,从而浪费网络带宽,并增加内部网络的负载。
从 Seafile 专业版 8.0.5 开始,可以启用数据块缓存功能以改善此问题。
  • 在 [fileserver] 配置组中设置 use_block_cache 以启用数据块缓存;默认不启用。
  • block_cache_size_limit 用于限制缓存大小,默认值为 10 GB。数据块保存在 seafile-data/block-cache 目录中。当缓存文件总大小超过限制时,seaf-server 会清理较旧的文件,直到缓存大小降至限制值的 70%。清理间隔为 5 分钟。需要合理估计缓存目录所需的磁盘空间,否则频繁下载可能很快占满该目录。
  • block_cache_file_types 用于指定需要缓存的文件类型,默认值为 mp4;mov。
[fileserver]
use_block_cache = true
# 将数据块缓存大小限制为 100 MB
block_cache_size_limit = 100
block_cache_file_types = mp4;mov
跳过数据块哈希计算(专业版)
通过网页和 API 大量上传文件时,根据数据块内容计算数据块 ID 可能带来较大的计算开销。
从 Seafile 专业版 9.0.6 开始,可以添加 skip_block_hash 选项,使用随机字符串作为数据块 ID。
警告: 启用该选项后,fsck 将无法检查数据块内容的完整性。执行 fsck 时,应指定 --shallow 参数,跳过内容完整性检查。
[fileserver]
skip_block_hash = true
上传文件扩展名白名单(专业版)
如果希望限制允许上传的文件类型,从 Seafile 专业版 10.0.0 开始,可以在 [fileserver] 配置组中设置 file_ext_white_list。
此选项用于列出允许上传的文件扩展名,只有列表中的文件类型可以上传。默认情况下不启用该限制。
[fileserver]
file_ext_white_list = md;mp4;mov
网页 API 上传时进行病毒检查(专业版)
从 Seafile 专业版 11.0.7 开始,可以要求文件服务器对通过网页 API 上传的每个文件进行病毒检查。有关更多设置,请参阅病毒扫描。
[fileserver]
# 默认值为 false
check_virus_on_web_upload = true
客户端同步后验证数据块
从 Seafile 12.0.4 开始,客户端完成上传后,Seafile 服务器会检查上传的数据块是否完整。该功能默认启用。
[fileserver]
# 默认值为 true
verify_client_blocks_after_sync = true
数据库配置
数据库配置位于 [database] 部分。
从 Seafile 11.0 开始,不再支持 SQLite。
[database]
type=mysql
host=127.0.0.1
user=root
password=root
db_name=seafile_db
connection_charset=utf8
max_connections=100
使用 MySQL 时,默认数据库连接池大小为 100,通常足以满足大多数使用场景。
从 Seafile 10.0.2 开始,可以添加以下配置,启用与 MySQL 服务器之间的加密连接:
[database]
use_ssl = true
skip_verify = false
ca_path = /etc/mysql/ca.pem
当 use_ssl 为 true 且 skip_verify 为 false 时,Seafile 会使用 ca_path 指定的 CA 证书验证 MySQL 服务器证书。ca_path 是用于签发 MySQL 服务器证书的可信 CA 证书路径。
如果 skip_verify 为 true,则无需设置 ca_path,但此时不会验证 MySQL 服务器的证书。
文件锁定(仅专业版)
Seafile 专业版服务器会在一定时间后自动让文件锁过期,防止文件被长时间锁定。可以在 seafile.conf 中调整过期时间。
[file_lock]
default_expire_hours = 6
默认值为 12 小时。
从 Seafile 专业版 9.0.6 开始,可以为获取已锁定文件的信息添加缓存,以减轻同步客户端对服务器造成的负载。从专业版 12 开始,该选项默认启用。
[file_lock]
use_locked_file_cache = true
要使缓存生效,还需要配置以下 Memcached 选项,将 <MEMCACHED_SERVER_IP> 替换为 Memcached 服务器地址:
[memcached]
memcached_options = --SERVER=<MEMCACHED_SERVER_IP> --POOL-MIN=10 --POOL-MAX=100
存储后端
可以配置 Seafile 使用不同类型的对象存储后端:
也可以配置 Seafile 同时使用多个存储后端。
集群
如果以集群方式部署 Seafile,应添加以下配置:
[cluster]
enabled = true
提示: 从 Seafile 12 开始,如果使用 Docker 部署 Seafile 集群,则不再需要该选项。
开启 Slow Log
从 Seafile 专业版 6.3.10 开始,可以启用 seaf-server 的 RPC 慢日志进行性能分析。慢日志默认启用。
如果需要修改相关选项,可以在 seafile.conf 中添加:
[slow_log]
# 默认值为 true
enable_slow_log = true
# 以下所有慢日志阈值的单位均为毫秒。
# 默认值为 5000 毫秒,仅记录处理时间超过 5000 毫秒的 RPC 请求。
rpc_slow_threshold = 5000
慢日志文件 seafile_slow_rpc.log 位于 logs/slow_logs 目录中。
也可以参考日志轮转配置日志文件轮转。早期版本可以向 seaf-server 进程发送 SIGUSR2 信号,使慢日志文件关闭后重新打开。
从 Seafile 专业版 9.0.2 开始,触发日志轮转的信号已改为 SIGUSR1。 该信号会触发 seaf-server 打开的所有日志文件的轮转,因此应相应更新日志轮转配置。
启用访问日志
虽然 Nginx 会记录请求 URL、响应状态码、上游处理时间等信息,但有时还需要记录更多与请求有关的上下文,例如每个请求对应的用户 ID。这些信息只能由文件服务器自身记录。
从 Seafile 专业版 9.0.2 开始,文件服务器提供访问日志功能。
要启用访问日志,请在 seafile.conf 中添加:
[fileserver]
# 默认值为 false。启用后,fileserver-access.log 将写入日志目录。
enable_access_log = true
日志格式如下:
开始时间 - 用户 ID - URL - 响应状态码 - 处理时间
可以发送 SIGUSR1 信号触发日志轮转。
Go Fileserver
Seafile 9.0 引入了 Go 语言实现的文件服务器(Go Fileserver)。可以在 seafile.conf 中设置以下选项启用它:
[fileserver]
use_go_fileserver = true
与传统的 C 语言文件服务器相比,Go 文件服务器具有以下三个优势:
  1. 同步包含大量文件的资料库时性能更好。 使用 C 文件服务器同步大型资料库时,可能占用服务器的全部工作线程,导致服务变慢。可以通过 max_sync_file_count 限制允许同步的资料库大小,其默认值为 10 万。使用 Go 文件服务器时,可以将该选项设置为更高的值,例如 100 万。
  2. 支持边生成边下载文件夹 ZIP 压缩包,且不限制下载文件夹的大小。 C 文件服务器必须先为待下载文件夹生成 ZIP 文件,再发送给客户端;Go 文件服务器则可以在传输过程中同时生成 ZIP 文件。因此,Go 文件服务器不再需要 max_download_dir_size 选项。
  3. 从 10.0 版本开始支持上传和下载速率限制。
文件系统对象缓存
Go Fileserver 会在内存中缓存文件系统(FS)对象。一方面,这可以避免反复创建和销毁频繁访问的对象;另一方面,也会延缓对象的释放速度,从而避免 Go 的垃圾回收(GC)机制消耗过多 CPU 资源。
可以通过以下选项设置 FS 缓存允许使用的内存大小:
[fileserver]
# 单位为 MB,默认值为 2 GB。
fs_cache_limit = 100
fs-id-list 请求的最大处理并发数
从 Seafile 专业版 12.0.10 开始,可以设置 fs-id-list 请求的最大处理线程数。
下载资料库时,Seafile 客户端会请求文件系统 ID 列表。可以通过 fs_id_list_max_threads 配置 Go Fileserver 处理这些请求的最大并发数,默认值为 10。
[fileserver]
fs_id_list_max_threads = 20
单连接上传和下载速率限制
从 Seafile 专业版 10.0.1 开始,使用 Go 文件服务器时,可以在 [fileserver] 配置组中使用 upload_limit 和 download_limit 限制文件上传及下载速度。
该限制适用于每个连接。当使用多个连接同时上传或下载时,总带宽占用可能超过设置的限制值。默认情况下不启用。
[fileserver]
# 单位为 KB/s
upload_limit = 100
download_limit = 100
单用户总上传和下载速率限制
从 Seafile 专业版 13.0.19 开始,Go Fileserver 支持为每个用户设置总上传/下载速率限制。此功能可以防止个别用户独占服务器带宽,是一种基本的服务质量(QoS)控制措施。
建议根据服务器的总体带宽容量设置合理的限制值。
限制方式如下:
  • 覆盖所有流量: 包括网页界面、API 调用、桌面客户端同步和分享链接产生的流量。
  • 上传与下载采用相同的限制值: 上传和下载的速率分别统计,但不能分别设置两个不同的速率限制。
  • 按用户账户限制,而不是按连接限制: 与 upload_limit、download_limit 不同,此限制绑定到用户账户,同一用户所有并发连接的带宽会合并计算,以执行限速。
  • 只能手动配置: 与单连接速率限制不同,不能通过 API 设置这一选项。
[fileserver]
# 默认单位为 KB/s
user_rate_limit=2000
# 也可以使用便于阅读的单位,如 MB、KB。
# user_rate_limit = 2MB
Go Fileserver 性能分析
从 Seafile 9.0.7 开始,可以添加以下配置,启用 Go Fileserver 的性能分析(Profiling)功能:
# profile_password 是必填项,请按实际需要修改。
[fileserver]
enable_profiling = true
profile_password = 8kcUz1I2sLaywQhCRtn2x1
可以使用 Go 语言提供的 pprof 工具访问性能分析接口。详细信息参阅 Go pprof 文档。
注意: 首先需要在执行以下命令的计算机上安装 Go。命令中 password 的值应与 profile_password 一致。以上密码仅用于演示,实际部署时请替换为自行生成的安全密码。
go tool pprof 'http://localhost:8082/debug/pprof/heap?password=8kcUz1I2sLaywQhCRtn2x1'
go tool pprof 'http://localhost:8082/debug/pprof/profile?password=8kcUz1I2sLaywQhCRtn2x1'