Ошибка чтения и записи на диск War Thunder при анализе файлов

Обновлено: 02.07.2024

8 ответов 8

Исходный ответ: я разместил пример проекта, чтобы проиллюстрировать этот ответ на Github

Мне удалось использовать это решение в Windows 2008 Standard R2, но, к сожалению, оно не работает в Windows 2008 Standard (не R2). Также вызывает много совместимых проблем при использовании в Windows 2008 или Windows 7.

Ссылку на dll можно добавить на вкладке "COM" в диалоговом окне "Добавить ссылку". Он указан в разделе «Microsoft CDO для библиотеки Windows 2000». Как сказал Рис, он включен в IIS.

Я получаю ошибки компиляции. Тип 'CDO.MessageClass' не имеет определенных конструкторов. аналогично для «ADOBD.StreamClass». Есть идеи?

Краткое содержание статьи состоит из 4 шагов (второй шаг отсутствует в статье, но необходим):

Добавьте ссылку на "Microsoft CDO для библиотеки Windows 2000", которую можно найти на вкладке "COM" в диалоговом окне "Добавить ссылку" Visual Studio. Это добавит в ваш проект 2 ссылки на "ADODB" и "CDO".

Отключите встраивание типов Interop для двух ссылок "ADODB" и "CDO". (Ссылки -> ADODB -> Свойства -> Установите для параметра "Встроить типы взаимодействия" значение False и повторите то же самое для CDO)

Добавьте в свой код следующий метод:

Вызовите этот метод, передав полный путь к файлу eml, и возвращаемый им объект CDO.Message будет содержать всю необходимую вам проанализированную информацию, включая "Кому", "От", "Тема", "Тело".

Sasa также включает синтаксический анализатор Mime.

Получение приличного синтаксического анализатора MIME, вероятно, было бы правильным решением. Вы можете попробовать использовать бесплатный синтаксический анализатор MIME (например, этот от codeproject), но комментарии от автора кода подобны этому

Я работал над этим примерно в то же время, что и над классом-оболочкой для файлов MSG. Большая разница в сложности. В то время как классу-оболочке EML, возможно, потребовался день, чтобы прочитать спецификацию и сделать все правильно, классу-оболочке MSG потребовалась неделя.

Меня заинтересовало качество кода. Я уверен, что вы можете взломать парсер пантомимы, который правильно анализирует 95% электронной почты за несколько дней/часов. Я также уверен, что на оставшиеся 5% уйдут месяцы. Рассмотрите возможность обработки S/MIME (зашифрованная и подписанная электронная почта), Unicode, искаженных электронных писем, созданных неправильными почтовыми клиентами и серверами, нескольких схем кодирования, проблем интернационализации, убедитесь, что преднамеренно искаженные электронные письма не приведут к сбою вашего приложения и т. д.

Если электронная почта, которую нужно проанализировать, исходит из одного источника, может быть достаточно быстрого и грязного синтаксического анализатора. Если вам нужно анализировать электронные письма из дикой природы, может потребоваться лучшее решение.

Я бы порекомендовал наш компонент Rebex Secure Mail, но я уверен, что вы получите достойный результат и с компонентами других поставщиков.

Убедиться, что выбранный вами синтаксический анализатор правильно работает с печально известным "Образцом сообщения Mime Torture", подготовленным Майком Криспином (соавтором RFC MIME и IMAP). Тестовое сообщение отображается в образце MIME Explorer и может быть загружено в установочном пакете.

Тема закрыта

5 ноя. 2015 в 0:42

Это новое обновление ♥♥♥♥♥♥ меня. Я больше не могу играть в War Thunder, я удалил и переустановил, и возникает та же проблема «Ошибка чтения/записи диска», это не проблема с моим жестким диском. Хорошая работа, Гайджин

5 ноя. 2015 в 0:49

Они закончили обновление серверов? Ожидаемое время, когда игра снова заработает, составляет немногим более 2 часов.

5 ноя. 2015 в 1:13

Вы знаете, что можете пропустить панель запуска? Зайдите в файлы War Thunder и запустите файл с именем aces .exe

5 ноя. 2015 в 1:20

У меня такая же проблема, эта ошибка чтения/записи возникает во время установки обновления и его фактического применения. Происходит примерно на полпути установки.

5 ноя. 2015 в 1:50

У меня такая же проблема, эта ошибка чтения/записи возникает во время установки обновления и его фактического применения. Происходит примерно на полпути установки.

5 ноя. 2015 в 2:11

5 ноя. 2015 в 3:18

это часто бывает вызвано тем, что антивирусное программное обеспечение слишком долго проверяет файлы, когда система находится под большой нагрузкой. на свое усмотрение и риск вы можете либо отключить антивирусное ПО при обновлении клиента, либо добавить папку War Thunder в список исключений.

Боюсь, вам придется повторять попытку

5 ноя. 2015 в 3:21

это потому, что они не закончили заполнять сервер обновлением для других торрентов.
дайте еще час.

5 ноя. 2015 в 4:38

Проверьте папку Steam\steamapps\common и убедитесь, что вы получаете пустой файл, удалите его и повторите установку.

5 ноя. 2015 в 4:42

У меня такая же проблема и нет пустых файлов.
Я больше не беспокоюсь, просто использую торрент-файл, который они предоставили в лаунчере.

5 ноя. 2015 в 4:45

Я удаляю все еще раз и пробую собственную страницу, чтобы посмотреть, не в стиме ли ошибка

5 ноя. 2015 в 5:01

У меня была эта проблема раньше.
Проверьте жесткий диск, на который вы загружаете игру.
Щелкните его правой кнопкой мыши, перейдите в свойства.
Что означает пункт рядом с " Файловая система" говорите?

5 ноя. 2015 в 5:35

5 ноя. 2015 в 5:35

Только что добавил исключение для моего антивируса, и вы узнаете, работает ли он

Я думаю, это сработало

Всем, кто столкнулся с этой ошибкой записи/чтения диска: одно из решений – деактивировать антивирус Avast для обновления. В моем случае это работает нормально.

6 ноя. 2015 в 15:04

Для всех, кто все еще сталкивается с этой проблемой после того, как попробовал вышеуказанные решения: вы можете просто решить ее. Вы можете постоянно перезапускать обновление каждый раз, когда оно терпит неудачу, и в конечном итоге оно завершится; просто это занимает примерно в два раза больше времени. По крайней мере, у меня так было.

Спасибо за совет по антивирусу. Мне нужно обязательно попробовать это, чтобы у меня была возможность избежать этой проблемы в будущем.


Это официальное приложение?
Это отдельное неофициальное приложение. Это бесплатно, и за его использование или загрузку не взимается плата.

Могу ли я загружать файлы?
Да, вам нужен MegaUploader!

Как он расшифровывает файлы?
Расшифровка производится на лету, при загрузке, поэтому не используются дополнительные ресурсы (ОЗУ или диск).


Как начать загрузку?
Сначала вы должны запустить программу и дождаться ее загрузки.
Тогда вам нужно добавить ссылки для скачивания.
Вы можете нажать на кнопку "Добавить ссылки" или скопировать их в буфер обмена - MegaDownloader их обнаружит!
Затем просто добавьте одну или несколько ссылок и поместите их в очередь.
Оказавшись в очереди, вы можете проверить статус:
- Остановлено: соединения закрыты, а загрузка остановлена.
- Загрузка: элементы очереди загружаются по порядку.
- Приостановлено: соединения открыты, но файлы не загружаются. Когда он вернется в состояние «Загрузка», он сразу же начнет загрузку.

Как настроить программу? Есть много вариантов!
Вы можете использовать настройки по умолчанию, ничего не трогая, чтобы начать загрузку. Когда появится экран настройки, нажмите Да, и все!
Единственный вариант, на который вам нужно обратить внимание, — это путь загрузки по умолчанию (куда сохраняется файл). Путь по умолчанию — Рабочий стол Windows. Если вы не укажете путь по умолчанию, вам придется вводить его каждый раз, когда вы что-то загружаете.


Как узнать оставшееся время?
По умолчанию некоторые столбцы не отображаются. Щелкните правой кнопкой мыши заголовок столбца в списке загрузок, выберите столбцы, которые нужно показать или скрыть.

Как я могу смотреть видео онлайн в потоковом режиме?
Посмотрите это руководство: Просмотр видео онлайн — руководство по потоковой передаче для MEGA.CO.NZ

Я не могу изменить размер столбца имени!
Размер этого столбца автоматически изменяется в зависимости от размера других столбцов. Поэтому вам следует изменить другие столбцы, чтобы изменить размер столбца имени. Это сделано для того, чтобы избежать горизонтальной прокрутки.

Загрузка выделена красным цветом и отображается сообщение ОШИБКА!
Щелкните по нему правой кнопкой мыши и выберите параметр "Просмотреть ошибку", он покажет более подробную информацию.

Ошибка говорит о превышении пропускной способности 509.
Мега имеет ограничение на загрузку. К сожалению, это реализовано на стороне сервера, поэтому вы ничего не можете сделать. Попробуйте перезапустить маршрутизатор, чтобы принудительно обновить IP-адрес, если у вашего интернет-провайдера динамический IP-адрес. Если повезет, вы получите новый IP-адрес и сможете продолжить загрузку еще немного.

Как я могу перевести приложение на другой язык?
Более полное руководство будет сделано в ближайшее время.
В основном вам нужно создать новый файл во внутреннем пути конфигурации, в каталоге Language, скопировав другой файл (рекомендуется использовать в качестве основы en-US.xml). Вы должны указать код языка в формате ISO 639 + ISO 3166. Затем вам нужно отредактировать XML и изменить сначала код и название языка, затем перевод (сохраняя атрибут «id» каждого узла) . Готовый!
При следующем запуске программы вы сможете изменить язык на экране конфигурации (если код языка правильный и существует).


Почему MegaDownloader предлагает дополнительные загрузки?
Если вы используете установщик MegaDownloader, он предложит дополнительные загрузки. Их предлагает третий партнер, эти предложения помогают нам поддерживать хостинг файлов.
Если вы не хотите их устанавливать, просто выберите нужный вариант (Отклонить/Отклонить) или загрузите бинарную/портативную версию.

Какую лицензию использует MegaDownloader?
Лицензия на использование бесплатна, программа предоставляется "как есть", никаких гарантий или условий (прямых или подразумеваемых) нет.
Внесение изменений запрещено. Его использование в целях получения прибыли не допускается. Вы можете распространять его свободно, но только при условии, что вы не будете изменять его и сохраните всю информацию (авторы, благодарности и т. д.).
Не допускается перераспределение с подменой авторства или удалением информации от авторов.
Если вы не согласны с этой лицензией, не используйте программу.
Это краткий обзор, программа поставляется с полной лицензией, проверьте ее перед использованием.

Мне нравится приложение! Как я могу отблагодарить вас?
Любые комментарии приветствуются (вы можете найти мой контакт в программе в разделе «Помощь / О программе»). Конструктивная критика тоже приветствуется (но не деструктивная). Если вы хотите, чтобы реализована новая функция, скажите мне, и я увижу, смогу ли я ее разработать.
И вы можете сделать пожертвование с помощью PayPal ;)

Вы также можете отправить мне Litecoins, если хотите: D
LXDHPf3TH582fsDdkynP1iMBRjdN5LisqF


image

Мы получаем довольно много записей о проблемах (PMR)/запросов на обслуживание (SR) для собственных проблем OutOfMemory в WebSphere Application Server, и одна из самых известных собственных проблем OOM возникает, в частности, в ОС Linux из-за недостаточного значения ulimit -u(NPROC) .

Мы также получаем большое количество сообщений PMR об ошибке "Слишком много открытых файлов" для WebSphere Application Server, работающего в Linux.

Благодаря простому устранению неполадок и настройке команды ulimit вы можете легко не открывать PMR с поддержкой IBM для решения этих проблем.

1) Что такое ulimit в Linux?
Команда ulimit позволяет управлять ограничениями пользовательских ресурсов в системе, такими как размер данных процесса, виртуальная память процесса, размер файла процесса, количество процессов и т. д.

2) Что происходит, если параметры этой команды установлены неправильно?
Происходят различные проблемы, такие как встроенная ошибка OutOfMemory, слишком много открытых файлов, файлы дампа не создаются полностью и т. д.

3) Как проверить текущие настройки ulimit?
Есть несколько способов проверить текущие настройки:

a) В командной строке введите
$ ulimit -a

Мы видим аналогичный результат, как показано ниже.
размер основного файла (блоки, -c) 0
размер сегмента данных (кбайт, -d) неограничен
приоритет планирования (-e) 0
размер файла (блоки, -f ) неограниченные
ожидающие сигналы (-i) 32767
максимальный объем заблокированной памяти (кбайт, -l) 32
максимальный размер памяти (кбайт, -m) неограниченный
открытые файлы (-n ) 1024
размер конвейера (512 байт, -p) 8
очередей сообщений POSIX (байт, -q) 819200
приоритет в реальном времени (-r) 0
размер стека ( кбайт, -s) 10240
время процессора (секунды, -t) неограниченно
максимальное число пользовательских процессов (-u) 50
виртуальная память (кбайт, -v) неограниченно
блокировка файлов (-x) неограниченно

При этом будут отображаться все текущие настройки, установленные для текущего сеанса входа, и по умолчанию будут отображаться мягкие ограничения. Ограничения могут быть Soft и Hard.
Жесткие ограничения — это максимальное ограничение, которое можно настроить. Только пользователь root может увеличивать жесткие ограничения, а другие пользователи могут их уменьшать. Мягкие ограничения могут устанавливаться и изменяться другими пользователями, но они не могут превышать жесткие ограничения.

Если вы хотите найти конкретные предельные значения, введите
ulimit -Sa

для текущего значения мягкого ограничения.
ulimit -Ha
для текущего значения жесткого ограничения.

b) Если вам известен идентификатор процесса (PID) сервера приложений WebSphere, который необходимо исследовать, вы также можете проверить следующий файл.
Расположение: /proc/

Содержимое этого файла похоже на вывод команды "ulimit -a".
Этот файл будет содержать список параметров ulimit и связанных с ними значений для указанного PID.

c) Если вам известен идентификатор процесса сервера, на котором вы хотите проверить текущие настройки ulimit, вы можете взять Javacore, введя
kill -3

Вы можете открыть этот Javacore в любом текстовом редакторе (например, NotePad++, Ultra Edit и т. д.)
и выполнить поиск ulimit, и вы найдете раздел ulimit.
Пример настройки ulimit, как это видно из Javacore.
Пользовательские лимиты (в байтах, кроме NOFILE и NPROC)
----------------- -------------------------------
тип мягкое ограничение жесткое ограничение
RLIMIT_AS 11788779520 неограниченно
RLIMIT_CORE 1024 неограниченный
RLIMIT_CPU неограниченный неограниченный
RLIMIT_DATA неограниченный неограниченный
RLIMIT_FSIZE неограниченный неограниченный
RLIMIT_LOCKS неограниченный неограниченный
RLIMIT_MEMLOCK неограниченный неограниченный
RLIMIT_NOFILE 18192 18192
RLIMIT_NPROC 79563 79563
RLIMIT_RSS 8874856448 без ограничений
RLIMIT_STACK 33554432 без ограничений

Если вы хотите найти глобальные настройки, проверьте приведенный ниже файл в Linux.
/etc/security/limits.conf.

Любые изменения в этих файлах глобальных ограничений конфигурации должны выполняться вашим системным администратором.
Чтобы узнать больше о каждом параметре команды ulimit, а также узнать о команде ulimit в различных ОС, см. эту техническую заметку: Рекомендации по настройке ulimits (WebSphere Application Server)

4) Какой родной OOM ожидается из-за недостаточных настроек ulimit?
Произойдет событие дампа памяти с сообщением «Не удалось создать поток».
Пример: в Javacore появится следующее сообщение.

"systhrow" (00040000) Detail "java/lang/OutOfMemoryError"
"Не удалось создать поток: retVal -1073741830, errno 12" получено
errno 12 — это фактический собственный OOM при запуске нить.

Иногда сбой при создании потока также отображается в журналах сервера, таких как SystemOut.log, SystemErr.log и т. д., а также в журналах FFDC, и эта ошибка указывает на собственный OutOfMemory, произошедший во время создания нового потока.

5) В чем причина возникновения этой ошибки?
Причина в том, что текущее значение ulimit -u(NPROC) слишком низкое.
Ограничение nproc обычно учитывает только процессы на сервере для определения этого числа. Системы Linux, работающие под управлением WebSphere Application Server, представляют собой особый случай. Ограничение nproc в Linux подсчитывает количество потоков во всех процессах, которые могут существовать для данного пользователя. Для большинства старых версий Linux это значение по умолчанию будет равно примерно 2048. Для стандартного Red Hat Enterprise Linux (RHEL) 6 значение по умолчанию для nproc будет равно 1024.
Это низкое значение по умолчанию для более крупные системы не позволят использовать достаточное количество потоков во всех процессах.

6) Как решить эту проблему?
Поддержка WebSphere Application Server рекомендует установить для ulimit -u или nproc значение 131072 при работе в Linux, чтобы безопасно учитывать все разветвленные потоки внутри процессов, которые могут быть созданы.

Его можно временно увеличить для текущего сеанса, установив

улимит -u 131072

который устанавливает значение мягкого ограничения.

Чтобы установить как мягкие, так и жесткие ограничения, введите

ulimit -Su 131072 для мягкого лимита.

ulimit -Hu 131072 для жесткого ограничения.

чтобы установить его глобально, системный администратор Linux должен отредактировать

7) А как насчет ошибки "Слишком много открытых файлов"?
Эта ошибка указывает на то, что все доступные дескрипторы файлов для процесса были использованы (включая сокеты).
Пример: ошибки, подобные приведенным ниже, будут отображаться в журналах сервера.

java.io.IOException: Слишком много открытых файлов
prefs W Не удалось заблокировать пользовательские настройки. Код ошибки UNIX 24.

8) Почему возникает эта ошибка?
Это может произойти, если текущий лимит числа открытых файлов слишком мал или это результат утечки файловых дескрипторов какой-либо частью приложения.

9) Как это исправить?
Поддержка IBM рекомендует установить для числа открытых файлов значение ulimit -n для WebSphere Application Server, работающего в Linux, как 65536 как для мягких, так и для жестких ограничений.

ulimit -Sn 65536
ulimit -Hn 65536

10) Что делать, если в приложении есть утечка дескриптора файла?
В Linux мы можем определить, увеличиваются ли какие-либо конкретные открытые файлы в течение определенного периода времени, периодически используя приведенные ниже данные с помощью команды lsof для идентификатора проблемного процесса JVM.

lsof -p [PID] -r [интервал в секундах, 1800 на 30 минут] > lsof.out

Вывод предоставит вам все открытые файлы для указанного PID. Вы сможете определить, какие файлы открываются и какие файлы со временем увеличиваются.
В качестве альтернативы вы можете перечислить содержимое файловых дескрипторов в виде списка символических ссылок в следующем каталоге, где вы замените PID на
идентификатор процесса. Это особенно полезно, если у вас нет доступа к команде lsof:

ls -al /proc/PID/fd

11) Есть ли что-то еще, что нужно настроить?
У нас есть еще один параметр, который мы можем настроить в Linux с помощью pid_max, который встречается редко и встречается только в больших средах. Если вы не используете большую среду, этот шаг можно пропустить.

Настройка pid_max предназначена для внутреннего ограничения максимального количества уникальных идентификаторов процессов, поддерживаемых вашей системой.
Значение по умолчанию — 32 768, этого достаточно для большинства клиентов.
В больших средах с огромным количеством процессов существует вероятность того, что этот предел может быть достигнут, и
родной OutOfMemory произойдет с аналогичным сообщением в
Javacore с ошибкой создания потока errno 11.
>Пример:

Событие дампа "systhrow" (00040000) Деталь "java/lang/OutOfMemoryError"
"Не удалось создать поток: retVal -106040066, получено сообщение об ошибке 11"

Чтобы найти текущее значение pid_max в Linux.
cat /proc/sys/kernel/pid_max

Чтобы увеличить его, введите
sysctl -w kernel.pid_max=

Иногда значение по умолчанию 32 768 может быть достигнуто из-за утечек потоков, вызывающих собственный OOM. В этом случае вам необходимо исправить эту утечку пула потоков, чтобы разрешить собственный OOM.

Вывод:
Убедитесь, что в Linux установлены указанные ниже настройки ulimit, чтобы избежать проблем «слишком много открытых файлов» и «недостаточно памяти» из-за невозможности создать поток.
Пользовательские ограничения (в байтах, кроме NOFILE и NPROC)

soft_limit hard_limit
RLIMIT_NOFILE 65536 65536
RLIMIT_NPROC 131072 131072

12) Что еще нужно проверить?
Поддержка IBM рекомендует следующие значения для всех параметров ulimit для WebSphere Application Server, работающего в Linux, включая параметры, которые мы обсуждали до сих пор.

Пользовательские лимиты (в байтах, за исключением NOFILE и NPROC)
type soft limit hard limit
RLIMIT_AS неограниченное неограниченное
RLIMIT_CORE неограниченное неограниченное
RLIMIT_CPU неограниченное неограниченное
RLIMIT_DATA неограниченное неограниченный
RLIMIT_FSIZE неограниченный неограниченный
RLIMIT_LOCKS неограниченный неограниченный
RLIMIT_MEMLOCK 65536 65536
RLIMIT_NOFILE 65536 65536
RLIMIT_NPROC 131072 131072

13) Что дальше?
Убедитесь, что указанные выше настройки установлены на всех JVM WebSphere Application Server, таких как DMGr, NodeAgent и AppServers, и перезапустите JVM, если настройки были выполнены глобально, или выйдите из системы и снова войдите под тем же пользователем, если изменения были сделаны в текущий сеанс (оболочка).

Читайте также: