.NET “Отправляет сообщение об ошибке [мне]”

Для загрузки с большим количеством записей и чтений, Вы извлечете выгоду из InnoDB. Поскольку InnoDB обеспечивает блокировку строки, а не блокировку таблицы, Ваш SELECT, с может быть параллельной, не только друг с другом, но также и со многими INSERT с. Однако, если Вы не намереваетесь использовать транзакции SQL, установить InnoDB, передают сброс 2 ( innodb_flush_log_at_trx_commit). Это дает Вам назад большую необработанную производительность, которую Вы иначе потеряли бы когда движущиеся таблицы от MyISAM до InnoDB.

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

Наконец, знать о различных загрузках таблицы. У Вас не будет того же отношения чтения-записи на всех таблицах. Некоторые меньшие таблицы приблизительно с 100%-ми чтениями могли позволить себе остаться MyISAM. Аналогично, если у Вас есть некоторые таблицы, которые являются близкой 100%-й записью, можно извлечь выгоду от INSERT DELAYED, но это только поддерживается в MyISAM (DELAYED, пункт проигнорирован для таблицы InnoDB).

, Но сравнительный тест, чтобы быть уверенным.

6
задан James M. 25 July 2009 в 20:23
поделиться

6 ответов

See this question on all the available logging frameworks in .NET, any of them should offer email notification.

I consider it a best practice to have a top level exception handler that collects and logs data on uncaught exceptions. As Meeh mentions in his comment to your question, you need one for each thread in your app.

There is an old article from Joel on the error reporting feature in FogBugz, maybe that will give you some more ideas. (I think I read it on his blog, but all I could find is this page form the FogBugz documentation).

4
ответ дан 10 December 2019 в 00:42
поделиться

Вы можете использовать блок Logging Application из Enterprise Library , чтобы легко отправлять электронные письма, когда вы перехватываете и регистрируете исключения. Вот некоторая информация о том, как создать последний обработчик исключений . Я предполагал, что у вас есть приложение Winform, но из вашего вопроса это не ясно.

2
ответ дан 10 December 2019 в 00:42
поделиться

Используйте те же инструменты, что и Windows: Отчет об ошибках Windows (WER). Он проведет анализ сбоев и классифицирует сбои, чтобы вы могли понять, какие из них наиболее распространены. Никаких изменений кода не требуется, это работает на уровне процесса. Он будет регистрировать сбои из-за исключений, которые вы не можете поймать.

Все, конечно, при условии, что вы работаете в Windows.

1
ответ дан 10 December 2019 в 00:42
поделиться

My standard disclaimer: I am a developer on this product.

Using a product (Runtime Intelligence) written by the company I work for (PreEmptive Soltutions) you can inject not only error reporting but also the ability to track when users are using your applications and what features they are using with minimal coding.

Using Dotfuscator to perform code injection (or IL weaving) we insert new code into your application binaries that sends usage data back to a server hosted at our facility (or optionally to any other arbitrary URL). If you send the data to us we provide you with a number of powerful analysis tools and reports on usage.

A basic version of this functionality is to be included in Visual Studio 2010 as well as access to a free data reporting portal (but with no SLA's, data retention guarantees or data privacy).

The ability to send arbitrary data back along with the usage information is limited to the commercial product, but you can contact PreEmptive Soltutions for a fully functional, free time limited evaluation version.

You can accomplish error reporting with the sample code below:

public partial class app : Application {
// field to temporarily store exception data        
    private Exception exp;
    void AppStartup(object sender, StartupEventArgs args) {
        // add a handler to catch any unhandled exceptions    
        this.DispatcherUnhandledException += new DispatcherUnhandledExceptionEventHandler(ErrorHandler); 
        Window1 mainWindow = new Window1();
        mainWindow.ShowDialog();
    }

    // this will prompt the user if they want to report the exception
    void ErrorHandler(object sender, DispatcherUnhandledExceptionEventArgs e) {
        this.exp = e.Exception;
        if (MessageBox.Show("A " + exp.Message + " exception happened, should I report it?", "Error Occurrend", MessageBoxButton.YesNo) == MessageBoxResult.Yes) {
            ErrorHappened();
            e.Handled = true;
        }
    }

    // this method is called by the above ErrorHandler method and when run through Dotfuscator additional code will be injected into this method that will send a usage data message back to the server and the data in the dictionary (which will be exception data) returned by the ErrorData method will be included into the message and be stored and reported on the server
    [Feature("Exception", EventType = FeatureEventTypes.Tick, ExtendedKeySourceElement = SourceElements.Method, ExtendedKeySourceName = "ErrorData")]
    private void ErrorHappened() {
        // This is here as a placeholder for the exception feature attribute which will exit the application when executed
        AppShutdown(true);
    }

    // this method takes the exception data from the exp field and returns it as a dictionary of name/value pairs
    public Dictionary<string, string> ErrorData() {
        var retval = new Dictionary<string,string>();
        if (null != exp) {
            retval.Add("Error Message",exp.Message);
            retval.Add("Stack Trace",exp.StackTrace);
        }
        return retval;
    }
}
1
ответ дан 10 December 2019 в 00:42
поделиться

I modified Jeff's User-Friendly Exception Handler and updated it for .NET 2.0/3.5, and I've had great luck with it. If an exception makes it all the way up the stack unhandled, a screenshot is taken and emailed along with a detailed stack trace to the dev team.

1
ответ дан 10 December 2019 в 00:42
поделиться

Если вы работаете над приложением ASP.NET, вы также можете использовать функции мониторинга работоспособности ASP.NET. Включает добавление нескольких строк в файл конфигурации, и все готово. http://msdn.microsoft.com/en-us/library/bb398933.aspx

0
ответ дан 10 December 2019 в 00:42
поделиться
Другие вопросы по тегам:

Похожие вопросы: