投稿

5月, 2019の投稿を表示しています

Tomcatの設定2:アクセスログの活用

Tomcatで運用する場合で、いくつか考慮した方が良い設定・情報を記載します。 Tomcatはデフォルトでアクセスログが出力されます。 インストールフォルダのTomcat\logs\localhost_access_log.YYYY-MM-DD.txtです。 こちらの設定がTomcat\conf\server.xmlで調整できます。 <!-- Access log processes all example.      Documentation at: /docs/config/valve.html      Note: The pattern used is equivalent to using pattern="common" --> <Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs"      prefix="localhost_access_log" suffix=".txt"      pattern="%h %l %u %t &quot;%r&quot; %s %b %D" /> 少々バージョンが古いですが、設定内容は以下のURLが参考になります。 Tomcatのアクセスログを出力する http://www.m-bsys.com/code/tomcat-accesslog デフォルトが日付毎のローテートですし、出力内容としても特に問題はないと思いますが、 追加で「処理時間(sec)」を出力するようにしておくと、 リクエストに時間が掛かったアクセスを分析することが出来て良いかと思います。 分析方法は「アクセスログ分析ソフトやサービス」といったものが色々とありますので、 そちらを使っていくのだと思いますが、そこまでは私も実施したことが無いです。

Tomcatの設定1:データソースを使用する方法とメリット

イメージ
GeneXusに限った話ではないのですが、 ジェネレータにJavaを選んだ場合はTomcatを利用することが多いかと思いますので、 Tomcatで運用する場合で、いくつか考慮した方が良い設定・情報を記載します。 GeneXusのデフォルト設定だと、DBへの接続方法はJDBCで、 コネクションプーリングもアプリケーション側で実施する形となります。 [Enable Connection Pooling] プロパティ http://wiki.genexus.jp/hwiki.aspx?%5BEnable+Connection+Pooling%5D+プロパティ, このままでも特に問題は無いのですが、 私の経験上、Tomcatのデータソースを利用する方が安定性が少し上がります。 数年前の事例ですが、サーバーを起動したまま運用を続けていくと、 徐々にTomcatのメモリが蓄積されていき、数週間すると動きが悪くなってくる。という現象がありました。 サーバースペックや、利用人数、アプリ側の作り方など、色々と影響は考えられますが、 何か特定の処理や操作をした場合ではなく、少しづつゴミデータが蓄積されているような状況でした。 このシステムでTomcatのデータソースを利用するようにしたところ、 問題が解消され、メモリが綺麗に開放されるようになった。 という経験があります。 このことから、Tomcatのデータソースを利用した方が、安定性が良いのかと思う次第です。 やはり世界中の技術者に10年も20年も使い込まれたTomcatは性能や品質が良いのでしょうね。 ただ、まあ、運用計画的に1週間に1回位は再起動をした方が 何かと良いのではないかとも思いますけどね。 <設定方法> 1.TomcatのcontextにDB情報を定義する Tomcat\conf\context.xmlか、 Tomcat\conf\catalina\localhost\<アプリケーション名>.xmlのどちらかに記述する 記述場所は<Context> ~ </Context>の間 <Resource name="jdbc/ 【任意のデータソース名】 " auth=&

セミナー情報

イメージ
超高速開発&エンタープライズアジャイル2019 https://www.nikkeibp.co.jp/seminar/event/ssd190523/ 5月23日(木)に「日経 xTECH」主催でセミナーが行われます。 基調講演の「会計検査院で初めて挑んだアジャイル開発」が、 私が携わったプロジェクトとなっています。 興味があれば是非ご参加ください。 ウイングGeneXusセミナー2019 http://weing-genexus.com/News/gx_seminar2019.html 5月24日(金)に株式会社WeING様のセミナーが行われます。 カナディアン・ソーラー・ジャパン株式会社様の事例は GeneXusを活用したアジャイル開発、短納期を実現した事例でして、 私が携わったプロジェクトです。 株式会社大成情報システム様の事例は フリーアドレスの座席表を管理するシステムで、画面上でイスや机を動的に配置したり、 タッチパネルで自分が今日座る席を選択したりといった面白いUIをもっており、 GeneXusとHTML&Javascriptを組み合わせたハイブリッド構成です。 こちらは私は少し技術支援という所でした。 興味があれば是非ご参加ください。

GeneXusデフォルトのJDBCドライバー(SQLServer)で問題

他では聞いたことの無い事例ですが、 同じ現象が起きる人がいるかもしれないので、掲載します。 GeneXusでJava/SQLServerのシステムを構築し運用していた所、 「データ登録時に、まれにエラーが発生することがある」という現象が出ました。 エラーの内容 HTTPステータス 500 - java.sql.SQLException: I/O Error: Connection reset HTTPステータス 500 - java.sql.SQLException: Invalid state, the Connection object is closed. 必ず起きるわけではないので、調査がかなり難しかったのですが、 結果としては、DBにBLOBのデータがあり、 画面からデータを登録する際に、ファイルもアップロードするのですが、 ファイルサイズが大きい場合に起こりやすいという状態でした。 GeneXusでJava/SQLServerのシステムを構築した場合、 JDBCドライバーはデフォルトでは、jTDS Draiver(Type4)が設定されます。 こちらはオープンソースのJDBCドライバーとなります。 普段は特に問題ないのですが、BLOBのファイルについて、 サイズが大きい場合やアップロードの頻度が高い場合に 予期しないエラーが発生する(ことがある) 解決方法として、SQLServerには、Microsoftが提供するJDBCドライバーがありますので、 そちらのドライバーを使用することです。 例: https://docs.microsoft.com/ja-jp/sql/connect/jdbc/microsoft-jdbc-driver-for-sql-server?view=sql-server-2017 具体的な原因が不明なので、スッキリはしないですが、 JDBCドライバーを入れ替えて以降はエラーが発生せず、 1年以上問題なく稼働しているので、解決方法としては正しいのかと思われます。