Zammad: Penjadwal tidak berjalan karena deskriptor file buruk di PGConsumeInput ()

Dibuat pada 11 Sep 2017  ·  23Komentar  ·  Sumber: zammad/zammad

Sejak memutakhirkan dari 1.6.x ke 2.1.x kami melihat email tidak ditarik lagi. Ini adalah saat kami melihat penjadwal mengalami kesalahan dengan koneksi PostgreSQL-nya.

Informasi:

  • Versi Zammad yang digunakan: 2.1.1-1505128598.ef38800b.jessie
  • Sumber instalasi Zammad yang digunakan: paket
  • Sistem operasi: Debian 8
  • Versi PostgreSQL: 9.4.13-0 + deb8u1

Kesehatan

channel is active but not fetched for 1 hour
channel is active but not fetched for 1 hour
channel is active but not fetched for 1 hour
channel is active but not fetched for 1 hour
scheduler not running

Catatan

==> /var/log/zammad/scheduler_err.log <==
ActiveRecord::StatementInvalid: PG::ConnectionBad: PQconsumeInput() could not receive data from server: Bad file descriptor
: SELECT "delayed_jobs".* FROM "delayed_jobs"
  /opt/zammad/vendor/bundle/ruby/2.4.0/gems/activerecord-5.0.5/lib/active_record/connection_adapters/postgresql_adapter.rb:598:in `async_exec'
  /opt/zammad/vendor/bundle/ruby/2.4.0/gems/activerecord-5.0.5/lib/active_record/connection_adapters/postgresql_adapter.rb:598:in `block in exec_no_cache'
  /opt/zammad/vendor/bundle/ruby/2.4.0/gems/activerecord-5.0.5/lib/active_record/connection_adapters/abstract_adapter.rb:590:in `block in log'
  /opt/zammad/vendor/bundle/ruby/2.4.0/gems/activesupport-5.0.5/lib/active_support/notifications/instrumenter.rb:21:in `instrument'
  /opt/zammad/vendor/bundle/ruby/2.4.0/gems/activerecord-5.0.5/lib/active_record/connection_adapters/abstract_adapter.rb:583:in `log'
  /opt/zammad/vendor/bundle/ruby/2.4.0/gems/activerecord-5.0.5/lib/active_record/connection_adapters/postgresql_adapter.rb:598:in `exec_no_cache'
  /opt/zammad/vendor/bundle/ruby/2.4.0/gems/activerecord-5.0.5/lib/active_record/connection_adapters/postgresql_adapter.rb:585:in `execute_and_clear'
  /opt/zammad/vendor/bundle/ruby/2.4.0/gems/activerecord-5.0.5/lib/active_record/connection_adapters/postgresql/database_statements.rb:103:in `exec_query'
  /opt/zammad/vendor/bundle/ruby/2.4.0/gems/activerecord-5.0.5/lib/active_record/connection_adapters/abstract/database_statements.rb:377:in `select_prepared'
  /opt/zammad/vendor/bundle/ruby/2.4.0/gems/activerecord-5.0.5/lib/active_record/connection_adapters/abstract/database_statements.rb:39:in `select_all'
  /opt/zammad/vendor/bundle/ruby/2.4.0/gems/activerecord-5.0.5/lib/active_record/connection_adapters/abstract/query_cache.rb:95:in `select_all'
  /opt/zammad/vendor/bundle/ruby/2.4.0/gems/activerecord-5.0.5/lib/active_record/querying.rb:39:in `find_by_sql'
  /opt/zammad/vendor/bundle/ruby/2.4.0/gems/activerecord-5.0.5/lib/active_record/relation.rb:702:in `exec_queries'
  /opt/zammad/vendor/bundle/ruby/2.4.0/gems/activerecord-5.0.5/lib/active_record/relation.rb:583:in `load'
  /opt/zammad/vendor/bundle/ruby/2.4.0/gems/activerecord-5.0.5/lib/active_record/relation.rb:260:in `records'
  /opt/zammad/vendor/bundle/ruby/2.4.0/gems/activerecord-5.0.5/lib/active_record/relation/delegation.rb:38:in `each'
  /opt/zammad/app/models/scheduler.rb:78:in `cleanup'
  /opt/zammad/app/models/scheduler.rb:24:in `threads'
  script/scheduler.rb:66:in `block in <top (required)>'
  /opt/zammad/vendor/bundle/ruby/2.4.0/gems/daemons-1.2.4/lib/daemons/application.rb:266:in `block in start_proc'
  /opt/zammad/vendor/bundle/ruby/2.4.0/gems/daemons-1.2.4/lib/daemons/application.rb:275:in `start_proc'
  /opt/zammad/vendor/bundle/ruby/2.4.0/gems/daemons-1.2.4/lib/daemons/application.rb:296:in `start'
  /opt/zammad/vendor/bundle/ruby/2.4.0/gems/daemons-1.2.4/lib/daemons/controller.rb:56:in `run'
  /opt/zammad/vendor/bundle/ruby/2.4.0/gems/daemons-1.2.4/lib/daemons.rb:197:in `block in run_proc'
  /opt/zammad/vendor/bundle/ruby/2.4.0/gems/daemons-1.2.4/lib/daemons/cmdline.rb:92:in `catch_exceptions'
  /opt/zammad/vendor/bundle/ruby/2.4.0/gems/daemons-1.2.4/lib/daemons.rb:196:in `run_proc'
  script/scheduler.rb:49:in `<top (required)>'
==> /var/log/zammad/scheduler_out.log <==
bundler: failed to load command: script/scheduler.rb (script/scheduler.rb)

PostgreSQL dapat dihubungkan dan berfungsi dengan baik.

bug

Komentar yang paling membantu

@martini Saya dapat mengonfirmasi bahwa pembaruan berhasil. Terima kasih banyak!

Akan mencoba menurunkan versi ke 2.0 sebentar lagi.

Semua 23 komentar

Ini biasanya terjadi ketika tidak ada ruang tersisa di temp atau penyimpanan data. Saya tidak berpikir ini terkait dengan Zammad. Traceback langsung dari
ActiveRecord

Saya menyarankan untuk memeriksa sistem file (spasi dan inode) dan melakukan pengecekan pada database PG.

Edit:
Apa yang terjadi ketika Anda memulai ulang keduanya, Scheduler dan Postgresql?

catatan:
Tolong jangan gunakan cabang pengembangan dalam produksi! 2.0 stabil

Sistem file tidak terlihat mendekati penuh.

hexa<strong i="6">@tickets</strong>:~$ df -h
Filesystem      Size  Used Avail Use% Mounted on
/dev/xvda1       20G  6.2G   13G  34% /
udev             10M     0   10M   0% /dev
tmpfs           502M   45M  457M   9% /run
tmpfs           1.3G   16K  1.3G   1% /dev/shm
tmpfs           5.0M     0  5.0M   0% /run/lock
tmpfs           1.3G     0  1.3G   0% /sys/fs/cgroup
tmpfs           251M     0  251M   0% /run/user/2000
hexa<strong i="7">@tickets</strong>:~$ df -i
Filesystem      Inodes IUsed   IFree IUse% Mounted on
/dev/xvda1     1310720 97329 1213391    8% /
udev            314738   268  314470    1% /dev
tmpfs           320664   313  320351    1% /run
tmpfs           320664     5  320659    1% /dev/shm
tmpfs           320664     3  320661    1% /run/lock
tmpfs           320664    13  320651    1% /sys/fs/cgroup
tmpfs           320664     4  320660    1% /run/user/2000

PostgreSQL tampaknya tidak memiliki mekanisme pemeriksaan internal apa pun. Memulai ulang keduanya tidak mengubah situasi.


Saya mengerti untuk tidak menggunakan cabang pengembangan, tetapi kami harus memulai dengan 1.6 karena kami memerlukan LDAP dan kemudian lupa untuk menyematkan versinya.

Juga PostgreSQL jelas dan dapat diakses. Ini juga berfungsi dengan kredensial yang ditetapkan di /opt/zammad/config/database.yml .

root<strong i="7">@tickets</strong>:/home/hexa# sudo -u postgres psql
psql (9.4.13)
Type "help" for help.

postgres=# \connect zammad
You are now connected to database "zammad" as user "postgres".

zammad=# \dt
                      List of relations
 Schema |                Name                | Type  | Owner  
--------+------------------------------------+-------+--------
 public | activity_streams                   | table | zammad
 public | ar_internal_metadata               | table | zammad
 public | authorizations                     | table | zammad
 public | avatars                            | table | zammad
 public | calendars                          | table | zammad
 public | channels                           | table | zammad
 public | chat_agents                        | table | zammad
 public | chat_messages                      | table | zammad
 public | chat_sessions                      | table | zammad
 public | chat_topics                        | table | zammad
 public | chats                              | table | zammad
 public | cti_caller_ids                     | table | zammad
 public | cti_logs                           | table | zammad
 public | delayed_jobs                       | table | zammad
 public | email_addresses                    | table | zammad
 public | external_credentials               | table | zammad
 public | external_syncs                     | table | zammad
 public | groups                             | table | zammad
 public | groups_users                       | table | zammad
 public | histories                          | table | zammad
 public | history_attributes                 | table | zammad
 public | history_objects                    | table | zammad
 public | history_types                      | table | zammad
 public | http_logs                          | table | zammad
 public | import_jobs                        | table | zammad
 public | jobs                               | table | zammad
 public | karma_activities                   | table | zammad
 public | karma_activity_logs                | table | zammad
 public | karma_users                        | table | zammad
 public | link_objects                       | table | zammad
 public | link_types                         | table | zammad
 public | links                              | table | zammad
 public | locales                            | table | zammad
 public | macros                             | table | zammad
 public | network_categories                 | table | zammad
 public | network_categories_moderator_users | table | zammad
 public | network_category_subscriptions     | table | zammad
 public | network_category_types             | table | zammad
 public | network_item_comments              | table | zammad
 public | network_item_plus                  | table | zammad
 public | network_item_subscriptions         | table | zammad
 public | network_items                      | table | zammad
 public | network_privacies                  | table | zammad
 public | networks                           | table | zammad
 public | notifications                      | table | zammad
 public | oauth_access_grants                | table | zammad
 public | oauth_access_tokens                | table | zammad
 public | oauth_applications                 | table | zammad
 public | object_lookups                     | table | zammad
 public | object_manager_attributes          | table | zammad
 public | online_notifications               | table | zammad
 public | organizations                      | table | zammad
 public | organizations_users                | table | zammad
 public | overviews                          | table | zammad
 public | overviews_groups                   | table | zammad
 public | overviews_roles                    | table | zammad
 public | overviews_users                    | table | zammad
 public | package_migrations                 | table | zammad
 public | packages                           | table | zammad
 public | permissions                        | table | zammad
 public | permissions_roles                  | table | zammad
 public | postmaster_filters                 | table | zammad
 public | recent_views                       | table | zammad
 public | report_profiles                    | table | zammad
 public | roles                              | table | zammad
 public | roles_groups                       | table | zammad
 public | roles_users                        | table | zammad
 public | schedulers                         | table | zammad
 public | schema_migrations                  | table | zammad
 public | sessions                           | table | zammad
 public | settings                           | table | zammad
 public | signatures                         | table | zammad
 public | slas                               | table | zammad
 public | stats_stores                       | table | zammad
 public | store_files                        | table | zammad
 public | store_objects                      | table | zammad
 public | store_provider_dbs                 | table | zammad
 public | stores                             | table | zammad
 public | tag_items                          | table | zammad
 public | tag_objects                        | table | zammad
 public | tags                               | table | zammad
 public | taskbars                           | table | zammad
 public | templates                          | table | zammad
 public | templates_groups                   | table | zammad
 public | text_modules                       | table | zammad
 public | text_modules_groups                | table | zammad
 public | ticket_article_flags               | table | zammad
 public | ticket_article_senders             | table | zammad
 public | ticket_article_types               | table | zammad
 public | ticket_articles                    | table | zammad
 public | ticket_counters                    | table | zammad
 public | ticket_flags                       | table | zammad
 public | ticket_priorities                  | table | zammad
 public | ticket_state_types                 | table | zammad
 public | ticket_states                      | table | zammad
 public | ticket_time_accountings            | table | zammad
 public | tickets                            | table | zammad
 public | tokens                             | table | zammad
 public | translations                       | table | zammad
 public | triggers                           | table | zammad
 public | type_lookups                       | table | zammad
 public | user_devices                       | table | zammad
 public | users                              | table | zammad
(103 rows)

Hari ini saya memiliki hal yang sama di mac os 10.12.6 (tetapi itu berfungsi beberapa hari sebelumnya 🤥) dengan develop (Zammad 2.1). Semua bekerja (rails c, rails s, ...) mengharapkan penjadwal.

Saya memiliki Peningkatan yang sama dari 1,5 menjadi 2,0 penggunaan CPU 100% dan kesalahan ini

tail: scheduler_err.log: Datei abgeschnitten
ActiveRecord :: StatementInvalid: PG :: ConnectionBad: PQconsumeInput () tidak dapat menerima data dari server: Deskriptor file buruk
: PILIH "delay_jobs". * FROM "delay_jobs"
/opt/zammad/vendor/bundle/ruby/2.4.0/gems/activerecord-5.0.5/lib/active_record/connection_adapters/postgresql_adapter.rb:598:in async_exec' /opt/zammad/vendor/bundle/ruby/2.4.0/gems/activerecord-5.0.5/lib/active_record/connection_adapters/postgresql_adapter.rb:598:in blokir di exec_no_cache '
/opt/zammad/vendor/bundle/ruby/2.4.0/gems/activerecord-5.0.5/lib/active_record/connection_adapters/abstract_adapter.rb:590:in block in log' /opt/zammad/vendor/bundle/ruby/2.4.0/gems/activesupport-5.0.5/lib/active_support/notifications/instrumenter.rb:21:in instrument '
/opt/zammad/vendor/bundle/ruby/2.4.0/gems/activerecord-5.0.5/lib/active_record/connection_adapters/abstract_adapter.rb:583:in log' /opt/zammad/vendor/bundle/ruby/2.4.0/gems/activerecord-5.0.5/lib/active_record/connection_adapters/postgresql_adapter.rb:598:in exec_no_cache '
/opt/zammad/vendor/bundle/ruby/2.4.0/gems/activerecord-5.0.5/lib/active_record/connection_adapters/postgresql_adapter.rb:585:in execute_and_clear' /opt/zammad/vendor/bundle/ruby/2.4.0/gems/activerecord-5.0.5/lib/active_record/connection_adapters/postgresql/database_statements.rb:103:in exec_query '
/opt/zammad/vendor/bundle/ruby/2.4.0/gems/activerecord-5.0.5/lib/active_record/connection_adapters/abstract/database_statements.rb:377:in select_prepared' /opt/zammad/vendor/bundle/ruby/2.4.0/gems/activerecord-5.0.5/lib/active_record/connection_adapters/abstract/database_statements.rb:39:in select_all '
/opt/zammad/vendor/bundle/ruby/2.4.0/gems/activerecord-5.0.5/lib/active_record/connection_adapters/abstract/query_cache.rb:95: dalam select_all' /opt/zammad/vendor/bundle/ruby/2.4.0/gems/activerecord-5.0.5/lib/active_record/querying.rb:39:in find_by_sql '
/opt/zammad/vendor/bundle/ruby/2.4.0/gems/activerecord-5.0.5/lib/active_record/relation.rb:702:in exec_queries' /opt/zammad/vendor/bundle/ruby/2.4.0/gems/activerecord-5.0.5/lib/active_record/relation.rb:583:in load '
/opt/zammad/vendor/bundle/ruby/2.4.0/gems/activerecord-5.0.5/lib/active_record/relation.rb:260:in records' /opt/zammad/vendor/bundle/ruby/2.4.0/gems/activerecord-5.0.5/lib/active_record/relation/delegation.rb:38:in masing-masing '
/opt/zammad/app/models/scheduler.rb:78: di cleanup' /opt/zammad/app/models/scheduler.rb:24:in utas '
script / scheduler.rb: 66: di `blokir

@Hagelurm os yang mana? Dan proses apa yang membutuhkan 100%?

Dalam kasus kami script/scheduler.rb start -t .

Dalam kasus kami itu adalah script/scheduler.rb start -t

Itu juga ada di pihak saya. Biasanya penjadwal berjalan dalam mode daemon ( script/scheduler.rb start atau script/scheduler.rb stop ).

script/scheduler.rb start -t biasanya hanya digunakan untuk pengembang karena penjadwal tidak berjalan di latar belakang (sebagai daemon).

@mweinelt Pertanyaan bagi saya adalah, mengapa Anda menggunakan -t ?

JFI: Penjadwal berfungsi dengan baik untuk saya di latar belakang (sebagai daemon).

Saya menjalankan 2.1.1-1505985142.807a1d88.jessie karena saya lupa memasang pin ke versi stabil. Opsi -t harus berasal dari file layanan, saya belum mengubah apa pun terkait hal itu.

root<strong i="8">@tickets</strong>:/opt/zammad# grep -ri "scheduler.rb start" *
contrib/systemd/zammad-scheduler.service:ExecStart=/bin/bash -l -c "${BUNDLE_BINARY} exec script/scheduler.rb start -t"
Procfile:worker: bundle exec script/scheduler.rb start -t
Procfile.frontend:worker: bundle exec ruby script/scheduler.rb start -t
script/init-script-normal-user-rvm-fedora:    script/scheduler.rb start &> /dev/null && echo_success || echo_failure
script/init.d/zammad:  execute "RAILS_ENV=production script/scheduler.rb start $SCHEDULER_OPTS"
script/build/test_startup.sh:bundle exec script/scheduler.rb start
script/local_browser_tests.sh:script/scheduler.rb start
vendor/pkgr/processes/worker:exec bundle exec script/scheduler.rb start -t $@

Saya menggunakan Debian 8 kemarin saya Mencoba Versi 9 juga
Tapi Kesalahannya sama
Saya tidak mengubah apa pun yang -t berasal dari paket bukan dari saya

Proses dengan 100% adalah Ruby
skrip / scheduler.rb mulai -t
Setiap saat mulai dan menabrak

dari scheduler.rb --help:

  • "-t, --ontop Tetap di atas (tidak membuat daemonisasi)"

Mungkin tapi Penjadwal macet sepanjang waktu
Die You Think alasannya adalah Parameter ontop?

@Bayu_joo
Tidak, hanya ingin menjelaskan apa yang dilakukannya. Tidak melihat jawaban Martini.
Daemonizing dilakukan oleh systemd jadi biasanya tidak ada masalah.

@Martini
Jika saya ingat benar "-t" digunakan karena systemd mengira scheduler gagal & dihentikan ketika masuk ke backround dari file unit.

@bayu_joo
Jika Anda menggunakan 2.1.1, Anda dalam pengembangan repo.
Tidak ada cara untuk menyematkan paket stabil di sana.
Gunakan repo stabil untuk mendapatkan paket stabil: https://packager.io/gh/zammad/zammad/builds/2414/install/debian-8

@monotek
Menyetel Type=forking seharusnya memungkinkan untuk memulai tanpa -t jika saya tidak salah.

Mengenai downgrade ke rilis stabil (2.0.x):
Saya harus mengembalikan beberapa migrasi jika saya tidak memiliki cadangan terbaru, bukan?

Terima kasih atas petunjuknya. Akan mencoba mengubahnya nanti. Tidak yakin apakah mungkin di packager.io.

oke saya menggunakan versi 2.0 sekarang
tapi sekarang saya punya masalah dengan saluran email

Email :: Pemberitahuan keluar Tidak dapat menggunakan Channel :: Driver :: Smtp: # <: econnrefused: i = "6">

Saya tidak bisa memeriksa Pengaturan karena Akun kosong :-(

ticket
saluran aktif tetapi tidak diambil selama 1 jam
Channel: Email :: Notification out Tidak bisa menggunakan Channel :: Driver :: Smtp: # <: econnrefused: i = "7">

bagaimana mungkin untuk mengatur baru di cli?

@Hagelsturm coba periksa setelan smtp Anda, mungkin parameter host untuk SMTP di setelan saluran email Anda tidak ada. Juga, karena masalah Anda adalah masalah baru, Anda harus membuat masalah baru?

Halo yang disana! Masalah yang sama di sini. Saya sampai di sini dari # 1473. Saya menginstal versi 2.0 tetapi tidak dapat menambahkan akun email baru pada konfigurasi saluran email, mungkin terkait dengan komentar terakhir dari @Hagelsturm.

Saya harus mengembalikan beberapa migrasi jika saya tidak memiliki cadangan terbaru, bukan?

@mweinelt maaf, saya tidak melihat umpan balik ini. Saat ini tidak ada migrasi database antara stable dan develop. Jadi sekarang Anda dapat beralih antara stable / master dan mengembangkan tanpa masalah.

Bagaimanapun, tampaknya saya memperbaiki masalah "Deskriptor file buruk di PGConsumeInput". Jadi jika Anda memperbarui pengembangan terlebih dahulu (sebelum beralih kembali ke stabil) akan baik-baik saja!

Terima kasih atas umpan baliknya!

-Martin

@Hagelsturm JFI masalah email Anda terkait dengan masalah penjadwal ini. Masalah lain akan bagus untuk itu.

@martini Saya dapat mengonfirmasi bahwa pembaruan berhasil. Terima kasih banyak!

Akan mencoba menurunkan versi ke 2.0 sebentar lagi.

Apakah halaman ini membantu?
0 / 5 - 0 peringkat