SelfhostedPro / Yacht

A web interface for managing docker containers with an emphasis on templating to provide 1 click deployments. Think of it like a decentralized app store for servers that anyone can make packages for.
MIT License
3.48k stars 170 forks source link

High cpu-usage when accessing trough Safari on MacOS Catalina #157

Closed frepke closed 3 years ago

frepke commented 4 years ago

When accessing the webpage trough MacOS Catalina on my Macbook, the cpu usage is above 100% and the webpage freezes. With Firefox running on the same machine there's no problem and everything works fine and smooth.

Nice project btw 👍

kr., Frepke

SelfhostedPro commented 4 years ago

Hmm. My usage has been around the same for both. Would you be able to post the versions of your browsers as well as if there are any browser errors? (F12 > console tab)

frepke commented 4 years ago

My Safari version is 14.0 (15610.1.28.1.9, 15610)

There's one error in the console-tab


[Error] TypeError: undefined is not an object (evaluating 't.app.name')
ze — ApplicationDetails.vue:1:399
(anonymous function) — vue.runtime.esm.js:3548
i — vue.runtime.esm.js:4066
(anonymous function) — vue.runtime.esm.js:4479
ni — vue.runtime.esm.js:4468
Pn — vue.runtime.esm.js:4073
init — vue.runtime.esm.js:3118
n — vue.runtime.esm.js:3301
p — vue.runtime.esm.js:5978
f — chunk-vendors.10392213.js:63:43832
(anonymous function) — vue.runtime.esm.js:6477
(anonymous function) — vue.runtime.esm.js:3945
i — vue.runtime.esm.js:4066
(anonymous function) — vue.runtime.esm.js:4479
ni — vue.runtime.esm.js:4468
Pn — vue.runtime.esm.js:4073
init — vue.runtime.esm.js:3118
p — vue.runtime.esm.js:5978
f — vue.runtime.esm.js:5925
y — vue.runtime.esm.js:6053
f — vue.runtime.esm.js:5954
(anonymous function) — vue.runtime.esm.js:6477
(anonymous function) — vue.runtime.esm.js:3945
i — vue.runtime.esm.js:4066
(anonymous function) — vue.runtime.esm.js:4479
ni — vue.runtime.esm.js:4468
Pn — vue.runtime.esm.js:4073
init — vue.runtime.esm.js:3118
n — vue.runtime.esm.js:3301
p — vue.runtime.esm.js:5978
f — vue.runtime.esm.js:5925
(anonymous function) — vue.runtime.esm.js:6517
(anonymous function) — vue.runtime.esm.js:3948
i — vue.runtime.esm.js:4066
(anonymous function) — vue.runtime.esm.js:4479
(anonymous function) — vue.runtime.esm.js:4554
Zn — vue.runtime.esm.js:4310
(anonymous function) — vue.runtime.esm.js:1980
le — vue.runtime.esm.js:1906
promiseReactionJob

    re (chunk-vendors.10392213.js:63:12047)
    ie (chunk-vendors.10392213.js:63:11959)
    ee (chunk-vendors.10392213.js:63:11604)
    (anonymous function) (chunk-vendors.10392213.js:63:23784)
    i (chunk-vendors.10392213.js:63:27832)
    (anonymous function) (chunk-vendors.10392213.js:63:30689)
    ni (chunk-vendors.10392213.js:63:30606)
    Pn (chunk-vendors.10392213.js:63:27845)
    init (chunk-vendors.10392213.js:63:20554)
    n (chunk-vendors.10392213.js:63:21874)
    p (chunk-vendors.10392213.js:63:44203)
    f (chunk-vendors.10392213.js:63:43832)
    (anonymous function) (chunk-vendors.10392213.js:63:48313)
    (anonymous function) (chunk-vendors.10392213.js:63:27018)
    i (chunk-vendors.10392213.js:63:27822)
    (anonymous function) (chunk-vendors.10392213.js:63:30689)
    ni (chunk-vendors.10392213.js:63:30606)
    Pn (chunk-vendors.10392213.js:63:27845)
    init (chunk-vendors.10392213.js:63:20554)
    p (chunk-vendors.10392213.js:63:44203)
    f (chunk-vendors.10392213.js:63:43832)
    y (chunk-vendors.10392213.js:63:44817)
    f (chunk-vendors.10392213.js:63:43947)
    (anonymous function) (chunk-vendors.10392213.js:63:48313)
    (anonymous function) (chunk-vendors.10392213.js:63:27018)
    i (chunk-vendors.10392213.js:63:27822)
    (anonymous function) (chunk-vendors.10392213.js:63:30689)
    ni (chunk-vendors.10392213.js:63:30606)
    Pn (chunk-vendors.10392213.js:63:27845)
    init (chunk-vendors.10392213.js:63:20554)
    n (chunk-vendors.10392213.js:63:21874)
    p (chunk-vendors.10392213.js:63:44203)
    f (chunk-vendors.10392213.js:63:43832)
    (anonymous function) (chunk-vendors.10392213.js:63:48532)
    (anonymous function) (chunk-vendors.10392213.js:63:27001)
    i (chunk-vendors.10392213.js:63:27822)
    (anonymous function) (chunk-vendors.10392213.js:63:30689)
    (anonymous function) (chunk-vendors.10392213.js:63:31421)
    Zn (chunk-vendors.10392213.js:63:29628)
    (anonymous function) (chunk-vendors.10392213.js:63:12766)
    le (chunk-vendors.10392213.js:63:12157)
    promiseReactionJob```
SelfhostedPro commented 4 years ago

Hmmm. Interesting but that shouldn't lead to a huge slowdown. Do the Yacht logs say anything?

frepke commented 4 years ago

Looks like a lot of errors



[cont-init.d] 30-config: executing... 

[cont-init.d] 30-config: exited 0.

[cont-init.d] 31-migrate: executing... 

INFO  [alembic.runtime.migration] Context impl SQLiteImpl.

INFO  [alembic.runtime.migration] Will assume non-transactional DDL.

ERROR [alembic.util.messaging] Target database is not up to date.

FAILED: Target database is not up to date.

INFO  [alembic.runtime.migration] Context impl SQLiteImpl.

INFO  [alembic.runtime.migration] Will assume non-transactional DDL.

INFO  [alembic.runtime.migration] Running upgrade  -> 63d5c4dcdc68, automated db upgrade

Traceback (most recent call last):

  File "/usr/lib/python3.8/site-packages/sqlalchemy/engine/base.py", line 1276, in _execute_context

    self.dialect.do_execute(

  File "/usr/lib/python3.8/site-packages/sqlalchemy/engine/default.py", line 593, in do_execute

    cursor.execute(statement, parameters)

sqlite3.OperationalError: table template_variables already exists

The above exception was the direct cause of the following exception:

Traceback (most recent call last):

  File "/usr/bin/alembic", line 8, in <module>

    sys.exit(main())

  File "/usr/lib/python3.8/site-packages/alembic/config.py", line 581, in main

    CommandLine(prog=prog).main(argv=argv)

  File "/usr/lib/python3.8/site-packages/alembic/config.py", line 575, in main

    self.run_cmd(cfg, options)

  File "/usr/lib/python3.8/site-packages/alembic/config.py", line 552, in run_cmd

    fn(

  File "/usr/lib/python3.8/site-packages/alembic/command.py", line 298, in upgrade

    script.run_env()

  File "/usr/lib/python3.8/site-packages/alembic/script/base.py", line 489, in run_env

    util.load_python_file(self.dir, "env.py")

  File "/usr/lib/python3.8/site-packages/alembic/util/pyfiles.py", line 98, in load_python_file

    module = load_module_py(module_id, path)

  File "/usr/lib/python3.8/site-packages/alembic/util/compat.py", line 184, in load_module_py

    spec.loader.exec_module(module)

  File "<frozen importlib._bootstrap_external>", line 783, in exec_module

  File "<frozen importlib._bootstrap>", line 219, in _call_with_frames_removed

  File "alembic/env.py", line 91, in <module>

    run_migrations_online()

  File "alembic/env.py", line 85, in run_migrations_online

    context.run_migrations()

  File "<string>", line 8, in run_migrations

  File "/usr/lib/python3.8/site-packages/alembic/runtime/environment.py", line 846, in run_migrations

    self.get_context().run_migrations(**kw)

  File "/usr/lib/python3.8/site-packages/alembic/runtime/migration.py", line 522, in run_migrations

    step.migration_fn(**kw)

  File "/alembic/versions/63d5c4dcdc68_automated_db_upgrade.py", line 21, in upgrade

    op.create_table('template_variables',

  File "<string>", line 8, in create_table

  File "<string>", line 3, in create_table

  File "/usr/lib/python3.8/site-packages/alembic/operations/ops.py", line 1252, in create_table

    return operations.invoke(op)

  File "/usr/lib/python3.8/site-packages/alembic/operations/base.py", line 373, in invoke

    return fn(self, operation)

  File "/usr/lib/python3.8/site-packages/alembic/operations/toimpl.py", line 101, in create_table

    operations.impl.create_table(table)

  File "/usr/lib/python3.8/site-packages/alembic/ddl/impl.py", line 259, in create_table

    self._exec(schema.CreateTable(table))

  File "/usr/lib/python3.8/site-packages/alembic/ddl/impl.py", line 141, in _exec

    return conn.execute(construct, *multiparams, **params)

  File "/usr/lib/python3.8/site-packages/sqlalchemy/engine/base.py", line 1011, in execute

    return meth(self, multiparams, params)

  File "/usr/lib/python3.8/site-packages/sqlalchemy/sql/ddl.py", line 72, in _execute_on_connection

    return connection._execute_ddl(self, multiparams, params)

  File "/usr/lib/python3.8/site-packages/sqlalchemy/engine/base.py", line 1068, in _execute_ddl

    ret = self._execute_context(

  File "/usr/lib/python3.8/site-packages/sqlalchemy/engine/base.py", line 1316, in _execute_context

    self._handle_dbapi_exception(

  File "/usr/lib/python3.8/site-packages/sqlalchemy/engine/base.py", line 1510, in _handle_dbapi_exception

    util.raise_(

  File "/usr/lib/python3.8/site-packages/sqlalchemy/util/compat.py", line 182, in raise_

    raise exception

  File "/usr/lib/python3.8/site-packages/sqlalchemy/engine/base.py", line 1276, in _execute_context

    self.dialect.do_execute(

  File "/usr/lib/python3.8/site-packages/sqlalchemy/engine/default.py", line 593, in do_execute

    cursor.execute(statement, parameters)

sqlalchemy.exc.OperationalError: (sqlite3.OperationalError) table template_variables already exists

[SQL: 

CREATE TABLE template_variables (

    id INTEGER NOT NULL, 

    variable VARCHAR(255) NOT NULL, 

    replacement VARCHAR(255) NOT NULL, 

    PRIMARY KEY (id)

)

]

(Background on this error at: http://sqlalche.me/e/13/e3q8)

[cont-init.d] 31-migrate: exited 1.

[cont-init.d] 99-custom-files: executing... 

[custom-init] no custom files found exiting...

[cont-init.d] 99-custom-files: exited 0.

[cont-init.d] done.

[services.d] starting services

[services.d] done.

INFO:     Started server process [281]

INFO:     Waiting for application startup.

INFO:     Application startup complete.

INFO:     Uvicorn running on unix socket /tmp/gunicorn.sock (Press CTRL+C to quit)```
frepke commented 4 years ago

btw I installed Yacht from within OMV5

SelfhostedPro commented 4 years ago

Hmmm. Nothing there has anything to do with the charts so I'm not sure on that side of things. I'll see if there's any notes about safari in particular when it comes to charts.js

frepke commented 4 years ago

Okay, thank you

SelfhostedPro commented 4 years ago

Not seeing anything from chartjs about this. I believe it's got to do with Safari not following some kind of standard. Unfortunately there's nothing I can do as far as tweaking that goes. (I've already had all the performance settings turned on.

frepke commented 4 years ago

Not seeing anything from chartjs about this. I believe it's got to do with Safari not following some kind of standard. Unfortunately there's nothing I can do as far as tweaking that goes. (I've already had all the performance settings turned on.

Unfortunately, But it is what it is, thanks anyway.

Goodluck with this awesome project 👍

frepke commented 3 years ago

Hmmm, On my new M1 MacBook, Yacht is running absolutely smooth in Safari.

SelfhostedPro commented 3 years ago

Nice! In the new version I changed from the charting framework to try to make things better on the dashboard that may help. Let me know how it goes!