問題タブ [fragmentation]

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.

0 投票する
4 に答える
3021 参照

.net - HttpWebRequest のパケットの断片化を防ぐ方法

組み込みデバイスの HTTP デーモンに対して HttpWebRequest を使用すると問題が発生します。問題は、ソケット ストリームに書き込まれる http ヘッダーと http ペイロード (POST) の間に十分な遅延があるため、ソケットがソケット バッファーの内容をサーバーに解放することです。これにより、HTTP 要求が 2 つのパケットに分割されます (フラグメンテーション)。

もちろん、これは完全に有効ですが、パケットが約 1.8 ミリ秒以上分割されている場合、相手側のサーバーはそれに対処できません。したがって、これを(クライアントで)制御する現実的な方法があるかどうか疑問に思っています。

送信に使用されるソケットをこのレベルで制御する HttpWebRequest のプロパティはないようです。また、送信中にのみ作成されるため、ソケット自体に (つまり、リフレクションを介して) アクセスすることはできません。その後リリースされました (アウトバウンド http 接続プーリングの一部として)。BufferWriteStream プロパティは、webrequest 内の本文コンテンツをバッファリングするだけで (したがって、リダイレクトなどに引き続き使用できます)、リクエスト全体がソケットに書き込まれる方法には影響を与えないようです。

じゃあ何をすればいいの?

(ソケットから HTTP クライアントを書き直す必要がないように本当に努めています)

1 つのオプションは、HttpWebRequest が (おそらく ServicePoint を介して) 送信する何らかの種類のプロキシを記述し、その実装で TCP 要求全体をバッファリングすることです。しかし、それは大変な作業のようです。

Fidder を実行しているときも (同じ理由で) 正常に動作しますが、それは実稼働環境では実際にはオプションではありません...

[ps: NoDelay ソケットを使用してフラグメント化を明示的に制御するソケットレベルのテストをノックアップしたため、フラグメント化されたパケット間の間隔が問題であることは間違いありません]

0 投票する
2 に答える
845 参照

windows-xp - ファイルシステムの断片化を作成する方法は?

ファイルの断片化のリスク要因には、ほとんどの場合、ディスクがいっぱいで、ファイルの追加が繰り返されることが含まれます。ファイルの断片化の他のリスク要因は何ですか?C ++ / C#/ VB / VB.NETなどの一般的な言語を使用してファイルを操作し、ファイルの断片化を増やすことを目的として新しいファイルを作成するプログラムを作成するにはどうすればよいでしょうか。

WinXP/NTFSがターゲットです

編集:このようなものは良いアプローチでしょうか?ハードドライブの空き容量=FreeMB_atStart

  • 残りのハードドライブスペースの90%を埋めるために、たとえば10MBのファイルを作成しますか
  • 3番目に作成されたファイルをすべて削除する
  • FreeMB_atStart * .92/3のサイズのファイルを作成します
0 投票する
3 に答える
913 参照

c# - ディスクのデフラグはどのように機能しますか?

ハードドライブの状態を断片化の観点から示すものを書いてみたいと思います。たぶん、それをデフラグすることさえあります。

しかし、これがどのように機能するかを完全には理解していないことに気付きました。

誰かが私にこれを説明し、おそらく私がどこから始めるべきかについていくつかの提案を提供できますか?

私は主に C# を使用しています。これは、何かを組み立てるのに適した言語でしょうか。

前もって感謝します

0 投票する
2 に答える
3122 参照

c - TCP/UDP およびイーサネット MTU フラグメンテーション

オンラインでさまざまなサイトやチュートリアルを読みましたが、まだ混乱しています。メッセージが IP MTU より大きい場合は、send()送信されたバイトを返します。メッセージの残りの部分はどうなりますか? もう一度電話send()して、残りのメッセージを送信する必要がありますか? それとも、IP レイヤーが自動的に処理する必要があるものですか?

0 投票する
1 に答える
837 参照

oracle - Oracle テーブルの断片化

複数の Oracle 9i サーバーに分散されるようにテーブルをフラグメント化する方法を教えてください。

0 投票する
1 に答える
330 参照

.net - ファイルの断片化状態をプログラムで判断する

特定のファイルの断片化ステータス (つまり、このファイルが占有する個別の断片の量) を判断することはできますか? もしそうなら、これは.netを使ってどのように行うことができますか?

動機は次のとおりです。私のアプリケーションはデータを FileStream に保持し、そのサイズをオンデマンドで変更します。これにより、最終的にファイルが断片化されます。ファイルの断片化状態を監視し、それに基づいて、ファイルをコピーして新しいファイルに置き換える必要があるかどうかを判断します (したがって、MFT を変更せずに「最適化」します)。

0 投票する
3 に答える
33451 参照

soap - TCPパケットで「フラグメント化しない」の利点は?

お客様の1人が、アプリケーション(PC上)からサーバー(地理的に異なる場所)にデータを送信するのに問題があります。1100バイト未満のパケットを送信する場合、すべてが正常に機能しますが、これを超えると、TCPが数秒ごとにパケットを再送信し、応答がないことがわかります。テストに使用しているパケットは約1400バイトです(ただし1472未満)。1472バイトのICMPpingをwww.google.comに送信して、応答を得ることができます(したがって、ルーター/最初の数ホップではありません)。

私たちのアプリケーションがこれらのパケットにDFフラグを設定していることがわかりました。サーバーに向かう途中のルーターのMTUは1100以下であり、パケットをドロップしていると思います。

これは5000人に1人のクライアントに影響しますが、すべての人のルートが異なるため、これは予想されます。

データはSOAPエンベロープであり、SOAP応答が返されることを期待しています。なぜそれを行うのかを正当化することはできません。これを行うためのコードは前の開発者によって書かれました。

それで...アプリケーションデータのTCPパケットにDFフラグを設定することの利点または正当性はありますか?

ネットワーク診断アプリケーションに必要な理由は考えられますが、私たちの状況では必要ありません(データが断片化されているかどうかに関係なく、エンドポイントに到達する必要があります)。私たちのシステム管理者の1人は、SSLを使用することと関係があるかもしれないと言いましたが、私が知る限り、SSLはストリームのようなものであり、断片化に関係なく、ストリームが最後に再構築される限り、問題はありません。

正当な理由がない場合は、アプリケーションの動作を変更します。

前もって感謝します。

0 投票する
1 に答える
269 参照

mysql - MySQL 最適化 20 ギガ テーブル

毎日大量の挿入と更新が行われる 20 ギガのテーブルがあります。この表もよく検索されます。MySQL インデックスが断片化する可能性があり、おそらく再構築する必要があるかどうかを知りたいです。

CHECK TABLE、REPAIR TABLE、または同様のもののどれを理解するのが難しいと思いますか?

ガイダンスをいただければ幸いです。私はデータベースの初心者です。

0 投票する
5 に答える
9450 参照

performance - 特定のファイルの断片化を確認するにはどうすればよいですか?

ディスク上の特定のファイルを表示するツールはありますか?それはどの程度断片化されていますか?(そのファイルを直線的に読み取る場合、物理ディスクは何回シークする必要がありますか)

0 投票する
3 に答える
453 参照

android - Android アプリ: 最も広くアピールするために推奨される targetSdk は何ですか?

私はインターネット アクセスのみを必要とする Android アプリを持っており、API レベル 3 (1.5) をターゲットにして、最も幅広いハンドセット ベースに到達したいと考えています。ただし、API レベル 3 をターゲットにするには、ユーザーに表示される 2 つの追加のアクセス許可 (SD カードの変更と電話の状態の読み取り) が暗黙的に必要になるようです。

参照: Android の権限: 通話: 電話の状態と ID を読み取る)

つまり、API レベル 4 をターゲットにして 1.5 を実行しているユーザーを拒否するのか、それとも API レベル 3 をターゲットにして、アプリが必要としないほど多くのアクセス許可を要求していることに腹を立てているユーザーを拒否するのか?

ここで何をするのが最も賢明ですか?API レベル 3 に制限されているユーザーがまだたくさんいるのでしょうか?

提供された知恵に感謝します!ありがとう!