問題タブ [server]
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.
server - 大規模なデータ操作によるデータ破損
最近、非常に奇妙なデータ破損の問題が発生しています。基本的に私がしていることは次のとおりです。
- 「scp」を使用して、1 つのサーバーから hpcc (ハイ パフォーマンス コンピューティング) にいくつかの大きなデータ (50 ファイル、それぞれ約 8 GB) を転送します。
- 入力ファイルの各行を処理し、それらの変更された行を出力ファイルに追加/書き込みます。そして、「qsub -t 1-1000 xxx.sh」によって hpcc でこれを行います。これは、1000 個のジョブすべてを同時に破棄します。また、これらの 1000 のジョブは、平均してそれぞれ 4GB のメモリを使用しています。
私のスクリプトの基本的な形式は次のとおりです。
また
ただし、奇妙な点は、時々、データの一部にデータの破損が見られることです。
まず、「入力」データの一部が破損していることに気付きました (すべてではない)。それが「scp」の問題かどうかは疑問です。私は何人かのコンピューター関係者に尋ね、ここにも投稿しましたが、「scp」がデータを歪める可能性はほとんどないようです。そして、「scp」を実行して、データを再びhpccに転送します。今回の入力データはOKになります。変ですよね?したがって、これは私に考えさせます: メモリ/CPU 使用率の高いプログラムを実行するために使用されることによって、入力データが中断される可能性はありますか?
入力データが壊れている場合、出力も壊れているのはごく自然なことです。次に、入力データを再び hpcc に転送し、それらすべてが良好な状態であることを確認します。次に、プログラムを実行します (1000 ジョブを一緒に実行することを指摘する必要があります)。出力ファイルは...ほとんどが良い; しかし、非常に驚くべきことに、たった 1 つのファイルの一部が破損しています。したがって、この特定のファイルに対してプログラムを単独で再度実行すると、破損することなく適切な出力が得られます!! 私はとても混乱しています......非常に多くの奇妙なことを見た後、私の唯一の結論は次のとおりです。多くのメモリ集約型ジョブを同時に実行すると、データが損なわれるのではないでしょうか? (しかし、私はそのような仕事もたくさん実行していましたが、大丈夫そうです)
データの破損とは、次のことを意味します。
このようなもの:
ただし、次のようにする必要があります。
http - 誰かがこれらのapacheベンチの結果を解釈できますか?目立つものはありますか?
以下は、50の同時スレッドを使用した10Kリクエストのapacheベンチ実行です。
結果を理解するのに助けが必要ですが、1秒あたりのリクエスト数をブロックおよび制限しているものを指している可能性のある結果で目立つものはありますか?
接続時間のセクションを見ていて、「待機中」と「処理中」が表示されています。待機の平均時間は208、接続の平均時間は0、処理は208です。ただし、合計は208です。あまり意味がないので、誰かがこれを説明してもらえますか。
database-design - 過去のサーバーデータを保存する方法は?
履歴データ マイニングの目的でデータベースにデータを格納する方法についてアドバイスを探していました。特定の時点でのエンティティの状態を取得できる場合、そのデータを履歴的にマイニングし、過去の状態に基づいてどのような状態になる可能性があるかを予測できるように、それを保存する最良の方法は何ですか?
より具体的な例として、サーバーの稼働/停止状態と、そのサーバーの現在の負荷を取得できます。これは定期的に取得できます。このデータを保存して、アップ/ダウン状態や特定の時間枠の負荷を簡単に照会したり、そのサーバーの全履歴を取得したりしたいと考えています。データベース設計の経験はあまりありません。
scripting - 組み込みの冗長性を備えた逆増分バックアップ ソリューションはありますか (par2 など)?
主にバックアップ用にホーム サーバーを設定しています。ディスク容量を確保しながら、最も信頼性の高い方法でバックアップする必要がある約 90 GB の個人データがあります。特定の日付の任意のファイルに戻ることができるように、完全なファイル履歴が必要です。
データのサイズのため、毎週の完全バックアップはオプションではありません。代わりに、増分バックアップ ソリューションの方針に沿って検討しています。ただし、一連の増分バックアップで 1 つの破損が発生すると、一連のバックアップ全体が (ある時点を超えて) 回復不能になることを認識しています。したがって、単純な増分バックアップはオプションではありません。
私はこの問題に対する多くの解決策を研究してきました。まず、逆増分バックアップを使用して、ファイルの最新バージョンが失われる可能性を最小限に抑えます (古いファイルはそれほど重要ではありません)。次に、インクリメントとバックアップの両方を何らかの冗長性で保護したいと考えています。Par2 パリティ データは、この仕事に最適なようです。つまり、次の要件を満たすバックアップ ソリューションを探しています。
- 逆増分 (ディスク容量を節約し、最新のバックアップを優先するため)
- ファイル履歴 (リバース インクリメンタルを含むより広いカテゴリの一種)
- 増分およびバックアップ データの Par2 パリティ データ
- メタデータを保持する
- 帯域幅を効率的に使用できます (帯域幅の節約。インクリメントごとにディレクトリ全体をコピーする必要はありません)。ほとんどの増分バックアップ ソリューションは、この方法で機能するはずです。
これにより、ファイルの整合性と比較的小さなバックアップ サイズが保証されると (私は信じています)。すでに多くのバックアップ ソリューションを見てきましたが、多くの問題があります。
- Bacula - シンプルな通常の増分バックアップ
- bup - インクリメンタルで、par2 を実装しますが、逆インクリメンタルではなく、メタデータを保持しません
- duplicity - 増分、圧縮、および暗号化されていますが、逆増分ではありません
- dar - インクリメンタルで par2 は簡単に追加できますが、逆インクリメンタルでファイル履歴なしではありませんか?
- rdiff-backup - 必要なものにはほぼ完璧ですが、par2 のサポートはありません
これまでのところ、rdiff-backup が最善の妥協案のように思えますが、par2 はサポートしていません。par2 のサポートをバックアップの増分に簡単に追加できると思いますが、それらはバックアップごとに変更されるわけではありませんが、残りのファイルはどうですか? バックアップ内のすべてのファイルに対して par2 ファイルを再帰的に生成できますが、これは遅くて非効率的であり、バックアップ中の破損や古い par2 ファイルについて心配する必要があります。特に、変更されたファイルと破損したファイルの違いを見分けることができませんでした。また、そのようなエラーをチェックする方法や、バックアップ履歴にどのように影響するかについてもわかりません。誰もがより良い解決策を知っていますか? 問題へのより良いアプローチはありますか?
私の困難を読んでくれてありがとう。どんな助けでも大歓迎です。
android - 名前と値のペアをサーバーに送信する最良の方法は何ですか?
私はこれを2週間の大部分で試してきましたが、本当に行き詰まっています。最初に、クライアントがAndroidアプリである単純なObjectOutputStreamクライアント(サーバープログラム)を作成しましたが、機能しません(接続は読み取りますが、オブジェクトは読み取りません)。
だから今、私はこの単純なタスクを実行するために私が取ることができるかもしれない他のアプローチについて混乱していますか?誰か助けてもらえますか?
tomcat - GWT コンパイル後に変更が反映されない
Tomcat サーバーで GWT アプリケーションを実行しています。クライアント側のコードの変更は、GWT コンパイル後も反映されません。変更を確認するには、Eclipse を再起動する必要があります。その理由は何ですか?
java - クライアントを 1 つだけ受け入れるソケット
クライアント接続を受け入れるサーバーをJavaで作成しました。しかし、私は1つのクライアントしか接続できません
networking - リモートから localhost 上のサイトへのアクセス
私は自分のローカルホスト、ubuntu マシンの apache でプロジェクトを開発していました。時々、衣装を着た人に進行状況を示す必要があります. リモート マシンから localhost にアクセスできますか?
java - SMTP サーバーが DATA コマンドを受信しないのはなぜですか?
大学のプロジェクトで Java を使用して POP3 および SMTP サーバーをコーディングしています。SMTP サーバーを使用してクライアント (つまり、Thunderbird) 経由でメールを送信でき、サーバーは問題なく送信します。
gmail や hotmail などの外部送信者エージェントが SMTP サーバーを使用して電子メールを送信しようとすると、MAIL コマンドの後に QUIT コマンドを送信するため、通信が完了しません。なぜ外部エージェントはそれを行うのですか? SMTP プロトコルに従っていませんでしたか?
問題は、メールを送信しようとしている外部サーバーから接続を受信すると、次のことが起こることです (私: SMTP サーバー、送信者: 送信者エージェント)。これは、gmail エージェントの例です。
関連するコード スニペット (完全なクラス コードはhttp://code.google.com/p/sd-mail-server-claudiani-ferrari/source/browse/src/controller/smtp/SMTPCommandHandler.java?repo=mailserverにあります)
http - ログファイルからデータを抽出して別のファイルに出力し、一意性を探す必要がある
次のことを行う必要がある http アクセス ログからのデータがあります。
- 特定のディレクトリ内のすべてのファイルでパターンを検索します
- そのデータを別のファイルに書き込む
- 新しいファイルの一意性を確認し、重複するエントリを削除します
データは次のようになります。
<IP address> - - [09/Sep/2012:17:35:39 +0000] "GET /api/v1/user/followers?user_id=577670686&access_token=666507ba-8e88-423b-83c6-9df44bee2c8b& HTTP/1.1" 200 172209 <snip>
user_id=577670686 の数値部分に特に興味があります。これを新しいファイルに出力したいと思います (その部分はまだ試していません)...
私はsedを使用しようとしましたが、実際にデータを操作しようとしているわけではないので、信じられないほど不器用に思えます.... awkを見ましたが、データは実際には列ベースではなく、 $# 指定はしませんでした'このデータでは機能しません ($10 になりますよね?) そして、$# を使用した結果のデータ部分を取り除く方法がわかりませんでした。私は perl を使用するように提案されたので、Google で例を見てきましたが、それは私にはとてもなじみがありません。助言がありますか?