diff deploy.yaml @ 2:781290b4a683

nightly updater. performance config attempts & notes
author drewp@bigasterisk.com
date Fri, 24 Feb 2023 18:31:20 -0800
parents 9dc67ae8b507
children d393292f378c
line wrap: on
line diff
--- a/deploy.yaml	Sat Jan 14 18:18:35 2023 -0800
+++ b/deploy.yaml	Fri Feb 24 18:31:20 2023 -0800
@@ -60,7 +60,7 @@
       labels:
         app: photoprism
       annotations:
-        prometheus.io/scrape: "false"
+        prometheus.io/port: "9104"
     spec:
       volumes:
         - { name: photoprism-storage, persistentVolumeClaim: { claimName: photoprism-storage } }
@@ -69,14 +69,16 @@
       containers:
         - name: photoprism
           # https://github.com/photoprism/photoprism/releases
-          image: docker.io/photoprism/photoprism:221118-jammy
+          # image: docker.io/photoprism/photoprism:221118-jammy
+          image: docker.io/photoprism/photoprism:preview
           env:
             - { name: PHOTOPRISM_UPLOAD_NSFW, value: "true" }
             - { name: PHOTOPRISM_READONLY, value: "true" }
-            - { name: PHOTOPRISM_LOG_LEVEL, value: "info" }
+            - { name: PHOTOPRISM_LOG_LEVEL, value: "trace" }
+            - { name: PHOTOPRISM_TRACE, value: "true"}
             - { name: PHOTOPRISM_SITE_URL, value: "https://bigasterisk.com/photoprism/" }
             - { name: PHOTOPRISM_AUTH_MODE, value: "public" }
-            - { name: PHOTOPRISM_WORKERS, value: "4" }
+            - { name: PHOTOPRISM_WORKERS, value: "2" }
    
             - { name: PHOTOPRISM_DISABLE_WEBDAV, value: "true" }
             - { name: PHOTOPRISM_DISABLE_CLASSIFICATION, value: "true" }
@@ -90,6 +92,8 @@
             - { name: PHOTOPRISM_DATABASE_USER, value: "photoprism" }
             - { name: PHOTOPRISM_DATABASE_PASSWORD, value: "insecure" }
 
+            - { name: PHOTOPRISM_AUTO_INDEX, value: "-1" }
+            - { name: PHOTOPRISM_AUTO_IMPORT, value: "-1" }
           ports:
             - containerPort: 2342
           volumeMounts:
@@ -101,7 +105,7 @@
               # tensorflow analysis goes to like 1200Mi
               memory: 2500Mi
         - name: mariadb
-          image: docker.io/mariadb:10.10.2
+          image: docker.io/mariadb:10.10.3
           securityContext:
             runAsUser: 1000
             # let https://github.com/MariaDB/mariadb-docker/blob/749c720c63306d1572849afc6ab1cfa02fd08338/10.8/docker-entrypoint.sh 
@@ -109,22 +113,64 @@
           # command: suggested from photoprism docs
           #   - mysqld
           #   - --innodb-buffer-pool-size=512M
+          ## https://mariadb.com/kb/en/set-transaction/#isolation-levels current default is REPEATABLE-READ
           #   - --transaction-isolation=READ-COMMITTED
           #   - --character-set-server=utf8mb4
           #   - --collation-server=utf8mb4_unicode_ci
+          ## default 151
           #   - --max-connections=512
+          ## default 0
           #   - --innodb-rollback-on-timeout=OFF
+          ## default 50
           #   - --innodb-lock-wait-timeout=120
           volumeMounts:
             - { name: photoprism-storage, subPath: "mariadb", mountPath: "/var/lib/mysql" }
             - { name: run-mysqld, mountPath: "/run/mysqld" }
           env:
+          # https://hub.docker.com/_/mariadb/#:~:text=latest%20%2D%2Dverbose%20%2D%2Dhelp-,Environment%20Variables,-When%20you%20start
+          # says these only matter upon the first run.
             - { name: MARIADB_AUTO_UPGRADE, value: "1" }
             - { name: MARIADB_INITDB_SKIP_TZINFO, value: "1" }
             - { name: MARIADB_DATABASE, value: "photoprism" }
             - { name: MARIADB_USER, value: "photoprism" }
             - { name: MARIADB_PASSWORD, value: "insecure" }
             - { name: MARIADB_ROOT_PASSWORD, value: "insecure" }
+        - name: mariadb-exporter
+          # for this to work, run this once:
+          # 
+          # k exec -it deploy/photoprism mariadb -- mysql --user=root --password=insecure
+          # 
+          # CREATE USER 'exporter'@'localhost' IDENTIFIED BY 'XXXXXXXX';
+          # GRANT PROCESS, REPLICATION CLIENT ON *.* TO 'exporter'@'localhost';
+          # GRANT SELECT ON performance_schema.* TO 'exporter'@'localhost';
+          # GRANT ALL ON photoprism.* TO 'exporter'@'localhost';
+          image: prom/mysqld-exporter:v0.14.0
+          args:
+           # see: k exec -it deploy/photoprism -c mariadb-exporter -- /bin/mysqld_exporter --help
+           - "--collect.info_schema.tables.databases=photoprism"
+           - "--collect.info_schema.tables"
+           - "--no-collect.slave_status"
+           - "--collect.info_schema.processlist"
+           - "--no-collect.info_schema.query_response_time"
+           - "--collect.perf_schema.tablelocks"
+           - "--collect.perf_schema.eventsstatements"
+           - "--collect.perf_schema.eventswaits"
+           - "--collect.perf_schema.tableiowaits"
+           - "--collect.perf_schema.indexiowaits"
+           - "--collect.perf_schema.file_events"
+           - "--collect.perf_schema.file_instances"
+           - "--collect.perf_schema.memory_events"
+           # need to turn on 'userstat' in mysql or something for these
+           #- "--collect.info_schema.tablestats"
+           #- "--collect.info_schema.schemastats"
+           - "--log.level=info"
+          ports:
+          - containerPort: 9104
+          env:
+          - name: DATA_SOURCE_NAME
+            value: "exporter:XXXXXXXX@unix(/run/mysqld/mysqld.sock)/"
+          volumeMounts:
+            - { name: run-mysqld, mountPath: "/run/mysqld" }
       affinity:
         nodeAffinity:
           requiredDuringSchedulingIgnoredDuringExecution:
@@ -142,6 +188,7 @@
 spec:
   type: LoadBalancer
   ports:
-    - { port: 80, targetPort: 2342 }
+    - { port: 80, targetPort: 2342, name: web }
+    - { port: 9104, targetPort: 9104, name: metrics }
   selector:
     app: photoprism