問題タブ [rt]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
rt - RTスクリプト内の以前のステータスを確認したいですか?
私の$TransactionPreviousStatus = $self->TicketObj->Status->OldValue
:
これは古いステータスを与えるべきだと思っていますが、現在のステータスになってしまいます
例:
旧ステータス: オープン
現在のステータス: 返信してください
そのため、誰かがチケットに返信すると、カスタム スクリプトが実行され、ステータスが古い値 (つまり、オープン) に変更されますが、再び返信-pls に戻ります。
mysql - RT 4.0.3 から 4.4.3 では、ACL チェックが原因でパフォーマンスの問題が発生する
古いリクエスト トラッカー 4.0.3 インスタンスを 4.4.3 に更新しようとしています。アップグレードは、82,319 ユーザー (特権 LDAP ユーザーを含む; ExternalAuth ) でも機能します。
ここまでは順調ですが、特権ユーザーを使用すると、キューを表示するパフォーマンスが非常に遅いことに気付きました。表示されるキューが長いほど、実行時間が長くなります。私は数分について話している.ルートユーザーまたは管理権限を持つ特権ユーザーを使用することにより、「すべてを実行するか何もしないか」(ドイツ語から翻訳)、すぐにキューを取得しました。
さらに、mysql クエリによって実行時間が長くなることがわかりました。ルート実行は ACL チェックを必要としないため、より高速に実行されます。でも、そんなに時間かかるのは普通じゃないですよね。それを理解するのに何時間もかかりました。
基本的に、クエリ (MYSQL EXPLAIN SELECT ...) による違いは次のとおりです。
| id | select_type | table | type | possible_keys | key | key_len | ref | rows | Extra
| SIMPLE| Groups_2| ref| groups1,groups2,groups3| groups1 | 67 | const | 693212 | Using where; Distinct
| SIMPLE | CachedGroupMembers_3 | ref | DisGrouMem,CachedGroupMembers3,cachedgroupmembers1 | DisGrouMem | 12 | rt3.Groups_2.id,const,const | 1 | Using where; Using index; Distinct
Groupsテーブルの 693212 行はかなり多いと思います。同じ更新されていないインスタンスを持つ古い (まだ実行中の) RT 4.0.3 インスタンスは、魅力的に動作します。
私は間違いを犯しましたか?
ちなみに、データベースのアップグレード中に次の警告が表示されました。
Processing 4.3.0 現在、データを挿入しています。[6564] [2018 年 8 月 29 日水曜日 22:44:51] [警告]: 列 'ExternalAuthId' の値が空でない 11141 人のユーザーがいます。コア RT はこの列を使用しないため、拡張またはローカルの変更で使用される可能性があります。このアップグレードによりこれらの列が削除されるため、これらのユーザー値をカスタム フィールドまたは属性に移行してください。./etc/upgrade/4.3.0/content 行 67. (./etc/upgrade/4.3.0/content:67) [6564] [2018 年 8 月 29 日水曜日 22:44:51] [警告]:列 'AuthSystem' の値が空でない 256 人のユーザー。コア RT はこの列を使用しないため、拡張またはローカルの変更で使用される可能性があります。このアップグレードによりこれらの列が削除されるため、これらのユーザー値をカスタム フィールドまたは属性に移行してください。./etc/upgrade/4.3.0/content 行 67 で (.
この問題を解決するために何も変更しませんでしたが、LDAP ユーザーは引き続きログインできるので、それは問題ではないと思います。
誰かアイデアはありますか?
ユーザー:
SELECT DISTINCT main.* FROM Tickets main LEFT JOIN Groups Groups_2 ON ( Groups_2.Domain = 'RT::Ticket-Role' ) AND ( Groups_2.Instance = main.id ) JOIN Queues Queues_1 ON ( Queues_1.id = main.Queue ) LEFT JOIN CachedGroupMembers CachedGroupMembers_3 ON ( CachedGroupMembers_3.Disabled = '0' ) AND ( CachedGroupMembers_3.MemberId = '1296794' ) AND ( CachedGroupMembers_3.GroupId = Groups_2.id ) WHERE ( ( main.Queue IN ('44', '59', '1', '4', '5', '6', '7', '8', '9', '10', '11', '12', '13', '14', '15', '16', '19', '20', '21', '22', '23', '24', '25', '26', '27', '29', '30', '31', '32', '33', '34', '35', '36', '37', '38', '39', '40', '41', '42', '43', '44', '45', '46', '47', '48', '49', '50', '51', '52', '53', '54', '55', '57', '58', '59', '60', '62', '63', '64', '65', '66', '68', '69', '72', '78', '79', '73', '80', '82', '83', '85', '88', '90', '92', '93', '94', '97', '99', '28', '102', '103', '106', '108', '109') OR ( CachedGroupMembers_3.MemberId IS NOT NULL AND Groups_2.Name = 'Requestor' ) OR ( CachedGroupMembers_3.MemberId IS NOT NULL AND Groups_2.Name = 'Cc' AND main.Queue IN ('77') ) OR ( CachedGroupMembers_3.MemberId IS NOT NULL AND Groups_2.Name = 'AdminCc' ) OR ( main.Owner = '1296794' ) ) ) AND (main.IsMerged IS NULL) AND (main.Status != 'deleted') AND (main.Type = 'ticket') AND (main.Queue = '72' AND ( ( Queues_1.Lifecycle = 'assets' AND ( main.Status = 'new' OR main.Status = 'allocated' OR main.Status = 'in-use' ) ) OR ( Queues_1.Lifecycle = 'default' AND ( main.Status = 'new' OR main.Status = 'open' OR main.Status = 'stalled' ) ) OR ( Queues_1.Lifecycle = 'approvals' AND ( main.Status = 'new' OR main.Status = 'open' OR main.Status = 'stalled' ) ) ) ) ORDER BY main.id ASC LIMIT 50;
セットで 11 行 (37.49 秒)
根:
SELECT main.* FROM Tickets main JOIN Queues Queues_1 ON ( Queues_1.id = main.Queue ) WHERE (main.IsMerged IS NULL) AND (main.Status != 'deleted') AND (main.Type = 'ticket') AND (main.Queue = '72' AND ( ( Queues_1.Lifecycle = 'default' AND ( main.Status = 'new' OR main.Status = 'open' OR main.Status = 'stalled' ) ) OR ( Queues_1.Lifecycle = 'assets' AND ( main.Status = 'new' OR main.Status = 'allocated' OR main.Status = 'in-use' ) ) OR ( Queues_1.Lifecycle = 'approvals' AND ( main.Status = 'new' OR main.Status = 'open' OR main.Status = 'stalled' ) ) ) ) ORDER BY main.id ASC LIMIT 50;
セットで 11 行 (0.00 秒)
rt - 添付ファイルを削除してディスク容量を減らす
ディスクにもっとスペースが必要なので、2 年前から大量のすべての添付ファイルを削除したいと思います。データベースの任意のフィールドを直接更新できますか? スペースを減らすのは良い考えですか?それを行うためのツールはありますか、またはmysqlデータベースでクエリを実行できますか?
ありがとう!